EchoDemo's Blogs

Java中的抽象类和接口

1、抽象类和常规类很像,但是不能使用new操作符创建它的实例,但抽象类可以用作一种数据类型,因此:GeometricObject[] objects=new GeometricObject[10];objects[0]=new Circle();像上面这样创建一个元素是GeometricObject类型的数组,然后创建一个GeometricObject的实例,并将它的引用赋值给数组是可以的。虽然不能使用new操作符创建它的实例,但仍然可以定义它的构造方法,抽象类的构造方法定义为protected,因为它只被子类使用。抽象方法只有定义而没有实现。它的实现由子类提供。

2、抽象方法不能包含在非抽象类中,也就是说一个包含抽象方法的类必须声明为抽象类。但是,可以定义一个不包含抽象方法的抽象类(同样不能使用new操作符创建它的实例),这种类是用来定义新子类的基类的。如果抽象父类的子类不能实现所有的抽象方法,那么这个子类也必须定义为抽象的。另外,抽象方法是非静态的。

3、即使子类的父类是具体的,这个子类也可以是抽象的。比如:object类是具体的,但继承于它的类却可以是抽象的。子类可以覆盖父类的方法并将它定义为abstract(这是很少见的),但是它在当父类的方法实现在子类中变得不合法时是很有用的。在这种情况下,子类必须为abstract。

4、接口是一种与类相似的结构,只包含常量和抽象方法。它和抽象类相似,不能使用new操作创建接口的实例。由于接口中所有的数据域都是public final static而且所有的方法都是public abstract,所以java允许忽略这些修饰符。

5、Java只允许为类的扩展做单一继承,但是允许使用接口做多重继承。用关键字extends,接口可以继承其他接口,但是不可扩展类。一个类可以扩展它的父类同时实现多个接口。

🐶 您的支持将鼓励我继续创作 🐶
-------------本文结束感谢您的阅读-------------