抽象类和接口

mac2024-05-10  2

接口 概念:使用 关键字interface来定义一个接口。 性质:1、定义接口包含接口声明和接口体,接口体中包含常量的声明(没有变量)和抽象方法两部分 (1)所有的常量的访问权限一定都是public,而且是static常量,所以只能用public、static、final修饰,可以省略。 (2)抽象方法:接口体中只有抽象方法,没有其他方法,但是abstract可以省略 public abstract 2、一个类需要在类声明中使用关键字implements声明该类实现一个或多个接口,比如:class A implements printable,Addable(A类实现Printable和Addable接口)。再比如class Dog extends Animal implements Eatable,Sleepable(Animal的Dog子类实现Eatable和Sleepable接口) 3、如果一个非抽象类实现了某个接口(也叫实现类),那么这个类必须重写这个接口中的所有方法,并且要在写的方法前都要加public,否则该类就会变成抽象类,不能有对象了。 4、如果非抽象类声明了一个接口,要重写接口中的所有方法,只有抽象类既可直接拥有接口中的方法,也可重写接口中的方法。 接口回调:把实现某一接口的类创建的对象赋给该接口声明的变量,那该接口变量就可以调用实现类的接口方法,结果也是多态的。 接口与多态:由接口产生的多态就是指不同的类在实现同一个接口时能有不同的实现方式。 接口参数:用接口声明,再在主函数创建接口实现类。 抽象类 概念:只要有一个方法是抽象的,那这个类就是抽象类,在类名前加abstract。抽象类中没有执行体。 性质:1、抽象类不能创建对象,所以如果不是想定义为抽象类时,构造方法不能加abstract,否则子子孙孙都不能创建对象。 2、不能用new运算符创建抽象类的对象,如果一个非抽象类是某个抽象类的子类,那它必须重写父类的所有抽象方法,给出方法体。也体现了多态性(指父类的某个方法被其子类重写时,可以根据需要各自产生自己的功能行为)。所以不允许final和abstract同时修饰一个方法或一个类,因为final不允许有子类,而且不允许重写,这样就不能创造对象了。 3、abstract类的对象可作为上转型对象:可以使用abstract类声明对象,尽管不能使用new运算符创建该对象,但是该对象可以成为其子类对象的上转型对象,那么该对象就可以调用子类重写的方法。 设计抽象类的好处:封装的更好,可拓展。

最新回复(0)