JAVA面向对象--继承--易遗忘知识点

来源:互联网 发布:潍坊淘宝托管 编辑:程序博客网 时间:2024/05/22 14:13

JAVA面向对象--继承--易遗忘知识点


一、子类继承父类时需要注意的:

(1)父类的构造方法不能被继承,构造方法只属于定义它们的类本身。当创建一个子类对象时,子类构造方法首先调用父类的构造方法并执行,接着执行子类构造方法。
(2)子类不能访问父类的private成员。

(3)子类通过成员属性变量的隐藏和方法的重写可以把父类的状态和行为改变为自身的状态和行为。
 

  注意:重写后的方法不能比被重写的方法有更 严格的访问权限。

              其中,优先级从大到小: public  protected  packge  private


二、super关键字

(1)调用父类的构造方法:super([参数列表]);

          注意:必须是子类构造方法中的头一条语句。

(2)如果在子类的构造方法中,没有显式地使用 super关键字调用父类的某个构造方法,那么默认地有:super( );语句,即调用父类的不带参数的构造方法。

        注意:这不是继承父类的构造方法,而是将父类的构造方法调用在子类的构造方法中


三、final 关键字

(1)final标记的类不能被继承。(声明一个final类就意味着它的所有方法也都是final的,但其中的成员变量未必是final的)

(2)final标记的方法不能被子类重写。

(3)final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次,这种赋值既可以在声明的同时进行,也可以在类的构造方法中进行。

(4)public static final共同标记常量时,该常量成为全局常量。如:public static final int PI=3;


四、抽象类 ,用abstract修饰


(1)      定义一个抽象类的格式如下:
      abstract class AbstractClass
     {
        ……
     }

抽象类不能被实例化,如果new AbstractClass( );  //编译错误


(2)含有抽象方法的类必须被声明为抽象类,抽象类的子类必须重写所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。
注意: 含有抽象方法的类一定是抽象类,抽象类中的某个方法不一定是抽象的。

(3)声明一个既是abstract又是final的类是不合法的,因为抽象类本身是不完整的,它依靠它的子类提供完整的实现。

五、接口


(1)接口中的方法都是抽象方法,抽象类不同,抽象类可以有非抽象的方法

(2)接口中只能有常量,不能有变量

(3)可以定义一个抽象类用implements关键字去实现一个接口中定义的部分方法;也可以定义一个具体类用implements关键字去实现一个接口中的所有方法

(4)一个类可以继承一个父类的同时,实现一个或多个接口,extends关键字必须位于implements关键字之前 。

(5)接口中的方法被默认是public ,所以类在实现接口方法时,一定要用public 来修饰

(6)如果接口的方法的返回类型如果不是void 的,那么在类中实现该接口方法时,方法体至少要有一个return 语句。


五、abstract类与接口的比较


(1)abstract类和接口都可以有abstract方法。
(2)接口中只可以有常量,不能有变量;而abstract类中即可以有常量也可以有变量。
(3)abstract类中也可以有非abstract方法,接口不可以。
(4)接口编译时处理,而abstract类运行时处理,因此,接口要比abstract类更节省运行开销。
(5)如果abstract类和接口都可以使用,优先使用接口,可以避免单继承的局限。


0 0
原创粉丝点击