抽象类和接口
创始人
2024-04-04 08:39:17
0

文章目录

前言

一、今日回顾

1.《高等数学》

2.阅读:

3.英语:

二、编程的那些事

1.引入库

2.读入数据

总结


前言


一、今日回顾

1.《高等数学》

2.阅读:

3.英语:

二、编程的那些事

1.抽象类的描述

在java中,一个没有方法体的方法应该被定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。

public abstract class Animal {public abstract void eat();
}

2.

//抽象类
public abstract class Animal {public abstract void eat();//抽象类里面可以有具体的方法体。//抽象类可以有具体的方法体,没有抽象方法,不过一般不那么做public void sleep(){System.out.println("睡觉");}}
//Cat类继承Animal类,重写抽象方法public class Cat extends Animal{@Overridepublic void eat() {System.out.println("猫吃鱼");}
}

//测试类
public class AnimalDemo {public static void main(String[] args) {Animal a =new Cat();a.eat();//eat方法再Animal里是抽象的,但在Cat类中被重写了//编译看左边Animal,执行看右边Cata.sleep();}
}

总结

抽象类的特点

  • 抽象类和抽象方法必需使用abstract关键字修饰

   public abstract class类名{}

   public abstract void eat();

  • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
  • 抽象类不能被实例化,那抽象类如何被实例化呢?参照多态的方式,通过子类对象实例化,这叫抽象类多态。
  • 抽象类的子类

   要么重写抽象类中的所有抽象方法

   要么是抽象类


 案例2:

public abstract class Animal {private  int age=20;private final String city="北京";//city被final修饰,变为一常量public Animal(){}public Animal(int age){this.age=age;}public abstract void eat();public void show(){age=40;System.out.println(age);System.out.println(city);}}
public class Cat extends Animal{@Overridepublic void eat() {System.out.println("猫吃鱼");}
}
public class AnimalDemo {public static void main(String[] args) {Animal a =new Cat();a.eat();//eat方法再Animal里是抽象的,但在Cat类中被重写了//编译看左边Animal,执行看右边Cata.show();}
}

 

 小结:抽象类的成员特点

  • 成员变量

可以是变量,也可以是常量

  • 构造方法

有构造方法,但不能被实例化,那么,构造方法的作用是什么呢?用于子类访问父类数据的初始化

  • 成员方法

可以有抽象方法:限定子类必须完成某些动作

也可以有非抽象方法;提高代码的复用性

public abstract class Animal {private  String name;private  int age;public Animal(){}public Animal(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public abstract void eat();//不写方法体,用abstract
}
public class Cat extends Animal {public Cat() {}public Cat(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println("猫吃鱼");}
}
public class Dog extends Animal{public Dog() {}public Dog(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println("狗吃骨头");}
}
public class AnimalDemo {public static void main(String[] args) {//创建对象,按照多态的形式Animal a=new Cat();a.setName("卡菲猫");a.setAge(5);System.out.println(a.getName()+","+a.getAge());a.eat();System.out.println("……");a=new Cat("加菲猫",5);System.out.println(a.getName()+","+a.getAge());a.eat();System.out.println("……");Animal dog=new Dog();dog.setAge(10);dog.setName("小防鼠");System.out.println(dog.getName()+","+dog.getAge());dog.eat();System.out.println("……");dog=new Dog("小防鼠",10);System.out.println(dog.getName()+","+dog.getAge());dog.eat();}
}

 接口

public interface Jumpping {void jump();
}
public class Cat implements Jumpping{public void jump(){System.out.println("猫可以调高了");}}
public class JumpingDemo {public static void main(String[] args) {Jumpping j=new Cat();j.jump();}
}
public interface Inter {public int num=10;public final int num2=20;
}

 

public class InterImpl implements Inter{public int num=11;}
public class InterfaceDemo {public static void main(String[] args) {Inter i=new InterImpl();System.out.println(i.num);System.out.println(Inter.num2);}
}

 

 

接口的成员特点

  • 成员变量

只能是常量

默认修饰符:public static final

  • 构造方法

接口没有构造方法,因为接口主要对行为进行抽象,是没有具体存在的。一个类如果没有父类,默认继承自Object类。

成员方法

只能是抽象方法

默认修饰符:public abstract

猫狗案例(接口版)

public interface Jumpping {void jump();
}

public abstract class Animal {private  String name;private  int age;public Animal() {}public Animal(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public abstract void eat();
}
public class Cat extends Animal implements Jumpping {public Cat() {}public Cat(String name, int age) {super(name, age);}public void jump(){System.out.println("猫可以调高了");}@Overridepublic void eat() {System.out.println("猫吃鱼");}
}
public class AnimalDemo {public static void main(String[] args) {Jumpping j=new Cat();j.jump();Animal a=new Cat();a.setName("加菲猫");a.setAge(8);System.out.println(  a.getAge()+a.getName());a.eat();System.out.println("-----");a=new Cat("加菲",8);System.out.println(  a.getAge()+a.getName());a.eat();System.out.println("-----");Cat c=new Cat();c.setName("加菲猫");c.setAge(8);System.out.println(  c.getAge()+c.getName());c.eat();c.jump();}
}

相关内容

热门资讯

上海银行股份有限公司关于诉讼事... 上海银行股份有限公司(以下简称“公司”)董事会及全体董事保证本公告内容不存在任何虚假记载、误导性陈述...
制度托底生育友好 江苏率先实现... 原题:制度托底 生育友好 江苏生娃基本不花钱 近年来,江苏加快建立全周期的生育保障体系,助力“怀得上...
古巴外长:美国正在加大对古“经... 新华社哈瓦那12月29日电(记者蒋彪)古巴外交部长罗德里格斯29日表示,美国正在加强对古巴的“极限施...
离职3个月起诉“老东家” 【深圳商报讯】(记者 詹钰叶)根据上海市高级人民法院官网近期披露的信息,外资公募联博基金前副总经理朱...
制度黑幕屡被诟病,韩国政府计划... 【环球时报驻韩国特约记者 黎枳银】综合韩联社、《朝鲜日报》等韩媒报道,韩国政府正式决定分阶段全面叫停...
特朗普:正考虑以“严重失职”为... 当地时间周一,美国总统特朗普暗示,他已经有了一位心目中的美联储下一任主席人选,但并不急于宣布。同时,...
原创 监... 随着时间向2026年靠近,有越来越多的上市公司公布了撤销公司监事会的消息。比如,继今年9月25日工商...
财政政策明年如何更加积极 中央经济工作会议部署,2026年我国继续实施更加积极的财政政策。扩大财政支出盘子、优化政府债券工具组...
济南恒誉环保科技股份有限公司 ... 本公司董事会及全体董事保证本公告内容不存在任何虚假记载、误导性陈述或者重大遗漏,并对其内容的真实性、...