继承 、final、抽象

来源:互联网 发布:2017年淘宝店有多少家 编辑:程序博客网 时间:2024/06/08 11:40
  1. 继承的优点:1提高了代码的复用性,2:让类与类之间产生关系,为多态提供了前提,3:java支持单继承,不直接支持多继承,(因为多父类有相同成员,会产生不确定性)。
  2. java支持多层继承,会出现继承体系,当要查看一个继承 体系的时,可以1:查看该体系的顶层类,了解体系基本功能2:创建体系中的最子类对象,完成功能的使用。
  3. 什么时候定义继承:当类和类之间存在着所属关系的时候,就定义继承。
  4. 当本类的成员和局部变量重名时用this区分,当子父类中的成员变量重名时用super区分,this代表本类对象的引用,super代表父类空间。子父类中成员变量内存图解

    5.当子父类中出现成员函数一模一样的情况,会运行子类中函数,这种情况叫覆盖,覆盖注意事项,1:子类方法覆盖父类方法是,子类权限要大于等于父类权限2:什么时候使用覆盖操作,当对一个类进行子类的扩展时,子类要保留父类的功能,但是要定义子类中该功能的特有内容时,使用覆盖。
    6.在子类的构造函数第一行有一个默认的隐式语句super(),调用父类中空参构造函数,构造函数不能继承过来。
    7.为什么子类实例化时候要访问父类中的构造函数呢,这是因为子类继承了父类,获取了父类中内容,所以在使用父类内容之前,要先看父类是如何对自己的内容进行初始化的,如果父类中没有空参构造函数,那么子类的构造函数必须用super明确要调用父类中哪个构造函数。注意:super语句必须放在子类构造函数的第一行。因为父类初始化动作必须要先完成。当子类构造函数中有写this调用了本类构造函数时,super就没有了,因为super和this都只能定义在第一行,只能有一个,但是可以保证的是子类中肯定会有其他的构造函数访问父类的构造函数。
    8.子类的实例化过程:


9.final关键字:
1,final可以修饰类,方法,变量。
2,final 修饰的类不可以被继承
3,final修饰的方法不可以被覆盖
4,final修饰的变量是一个常量,只能赋值一次。被final修饰的变量按照规范全部大写。
10.抽象类:
1,抽象类不能直接实例化,但是是有构造函数的,用来给子类进行初始化。
2,抽象类中是可以不定义抽象方法的,但是比较少见。
3,抽象类不可以跟private,static,final共存,抽象需要被覆盖,用private给隐藏了,没办法覆盖起冲突,被static修饰的不需要对象就可以直接调用,但是抽象方法没意义, final是不能覆盖,abstract是需要覆盖,起冲突
4和一般类区别,1,一般类有足够的信息描素失误,抽象类描素事物的信息可能不足;2,一般类不能定义抽象方法,抽象类中可以定义抽象和非抽象方法;3,一般类可以被实例化,抽象类不可以
5,抽象类一定是父类。

原创粉丝点击