day9
抽象类,接口,instanceof,面向接口编程基础
普通类和抽象类的关系 普通类也叫具体类,指没有使用abstrate修饰,可以创建对象的类:
抽象类,父类中存在,abstract 的方法,如果子类中没有实现这个方法(重写), 这个子类就是不完整的,java不允许使用不完整的类创建对象。
父类中存在抽象方法,子类可以不实现继续声明为抽象类,这时他可以编译,但他不再是普通类,也不能使用new创建,他把父类中的抽象方法继续交给更具体的子类 子类也可以继续声明为抽象类,子类中重写父类中的抽象方法,这时他是完整的普通类,可以使用new创建对象
子类中初始化父类的属性,在构造方法中写super(属性名字)
2. 接口
接口用于表示“具有什么能力“,描述能做什么,一种能力或规则
public interface Reportable { void submitReport();}接口中的这个方法没有方法体。现阶段可以把它理解为:
public abstract void submitReport();类使用 implements 实现接口:
public class OfficeEmployee extends Employee implements Reportable {}含义是:
extends Employee:OfficeEmployee 是一种员工。implements Reportable:OfficeEmployee 具有提交报告的能力。
public class OfficeEmployee extends Employee implements Reportable {
@Overridepublic void submitReport() { System.out.println(getName() + "提交纸质报告");}}
interface
Reportable 用来规定“提交报告”这种能力。
public interface Reportable { void submitReport();}任何类实现它,都必须提供 submitReport():
public class OfficeEmployee implements Reportable { @Override public void submitReport() { System.out.println("提交工作报告"); }}它单独放在 Reportable.java,因为:
- 它是一份独立规则,不专属于某个员工类。
- 多个类都可以实现它。
- Java要求公共顶层接口
Reportable放在同名文件Reportable.java中。
抽象类,接口,instanceof,面向接口编程基础
https://335264.xyz/posts/抽象类接口instanceof面向接口编程基础/