------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ----

来源:互联网 发布:演唱会谁比较好 知乎 编辑:程序博客网 时间:2024/04/19 15:50

黑马程序员 继承、super、复写、final、对象初始化过程

继承的概述

当多个类中存在相同的属性和行为时,将这些内容抽取到一个类中,那么多个类都无需再定义那么多属性和行为,只需继承单独的那个类即可。

 

子类可以访问父类非私有的方法和属性

通过extends关键字让类与类之间产生继承关系

 

继承的出现提高了代码的重用性,继承的出现让类与类之间产生了关系,提供了多态的前提。

 

继承的特点

JAVA只支持单继承,支持多层继承

定义继承需要注意:

不要为了获取其它类中的某个功能而去继承,

类与类之前要有所属(“IS A”)的关系。

 

super关键字

this关键字的用法相同

super代表父类的引用

当子父类同现同名成员时,可以用super来区分

子类要调用父类的构造函数时,可以用super语句,即    super(……);

 

函数覆盖

子类中出现与父类一模一样的方法时,会出现覆盖操作,也称为重写或复写。

父类的私有方法不可被复写。

在子类覆盖方法中,继续使用被覆盖的方法可以通过super.函数名(…)获取。

 

覆盖注意事项:

覆盖时,子类方法权限一定要大于或等于父类的方法。

静态只能覆盖静态。

 

覆盖的应用:

当子类需要父类的功能,而功能主体子类有自己特有内容时,可以复写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容。

 

子类的实例化过程

子类中所有的构造函数默认都会访问父类中空参数的构造函数,因为每一个构造函数的第一行都有一条默认的语句super()

 

final关键字

final用于修饰类,方法,变量

final修饰的类不可以被继承

final修饰的方法不可以被覆盖

final修饰的变量是常量,只能被赋值一次

内部类只能访问被final修饰的局部变量

 

.   对象的初始化过程

       :  Person p = new Person();

      

    因为new用到了Person.class,所以会找到Person.class文件并加载。

    加载时,自动执行了static代码块,并给Person.class进行初始化。

    在堆内存中开辟空间,分配分存地址。

    在堆内存建立对象的特有属性,并进行默认初始化。

    对对象属性进行显示初始化。

    对对象进行构造代码块初始化。

    对对象进行对应的构造函数初始化。

    将内存地址赋给栈内存中的p变量。


0 0
原创粉丝点击