黑马程序员 继承

来源:互联网 发布:linux cut 编辑:程序博客网 时间:2024/04/28 16:47

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


继承:看父类中的内容是不是都是子类中需要的。不是就不能继承。(只支持单继承)。支持多层继承。、


使用体系,应当先查阅体系父类的描述,因为父类里包含了体系的共性功能,基本功能。其实就可以使用了。


但是具体使用时,拿最子类的对象,这样不仅可以使用基本功能,还可以个性功能。而且有可能,父类是抽象类,无法实例化。


访问非私有变量的时候,this表示子类的引用,super表示父类的引用。


重载只看同名函数的参数列表,重写是子父类方法一模一样,包括return值。


构造函数的继承:会先调用父类的构造函数,因子类的构造函数中默认调用了super的默认构造函数!

子类为什么会必然访问父类的空参数的构造函数?

因为父类中的数据子类可以直接获取,子类对象在建立时要查看父类是如何对这些数据初始化的。所以子类在对象初始化时,要先访问下父类中的构造函数。如果要访问父类中指定的构造函数,要手动修改子类中的构造函数。

注意:super语句一定定义在子类构造函数的第一行。要不使用this要不使用super,但是你可以通过子类构造函数见的调用来访问父类的构造函数。子类的所有的构造函数,默认都会访问父类中空参数的构造函数。因为子类每一个构造函数的第一行都有一句隐式的super();

子类的构造函数第一行也可以手动指定this访问本类中的构造函数,子类中构造函数至少有一个会访问父类的构造函数。

this和super必须放在构造函数的第一行,所以只能放一个,因为初始化动作要最先做。有默认的初始化,也要先紧着默认的初始化。this只能用在构造函数间的调用,不能用在一般函数。


final修饰符:可以修饰类,函数,变量。Final修饰的类不可以被继承。为了避免被继承,被final修饰的方法不能被复写。

被final修饰的变量只能赋值一次,就是个常量,既可以修饰成员变量,也可以修饰局部变量。final double PI=3.14; MY_PI. 特定的数据用名称来标识的,固定数据就用final修饰,即使出现一次也final,这数据一定是不变的。再加上个static,大家就共享了。

当多个类中出现了相同功能,但功能主体不同,也可以进行向上抽取,这时只抽取功能定义,不抽取功能主体。分号结束。

啥叫抽象?就是看不懂!

抽象类的特点:

1.抽象方法一定定义在抽象类中。

2.抽象方法和抽象类都必须被abstract修饰。

3.抽象类不可以用new创建对象,因为调用抽象方法没有意义。

4.抽象类中的方法要被使用,必须由子类复写其所有的抽象方法后,建立子类对象调用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。???全得覆盖?。。。。。

抽象类强迫子类去做一些事情?!抽象类既可以有抽象方法,也可以有非抽象方法。~~

抽象类比一般类多了抽象方法。或者抽象函数。抽象类不可以实例化。就是在类中可以定义抽象。万一抽象类里全是非抽象的方法,其目的就是不让该类创建对象。抽象只能修饰类和方法,不能修饰变量。

什么是模板方法?

在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分,那就将不确定的暴露出去,由该类的子类去完成。

如果抽象类中的方法全是抽象的,就可以用interface!

接口定义时,格式特点:

1.接口中常见定义:常量,抽象方法。

2.接口中的成员都有固定修饰符:

常量:public static final    方法:public abstract 

接口里边全抽象,子类必须得都写出来啊。。那就是实现嘛,梦想是虚的,实现梦想才是现实嘛。。辛苦啊

implements。

不能多继承,是因为怕多个父类有相同的;接口里边没有方法主题,随便搞!继承和接口都可以。接口之间可以继承,肯定不可以实现。

支持多继承,只有在接口与接口之间存在多继承,而且接口里边的方法的返回值还得一样。功能扩展用接口!

0 0
原创粉丝点击