学习一天继承总结

来源:互联网 发布:医院网络推广,网络营销 编辑:程序博客网 时间:2024/05/19 08:41

---------------------- android培训、java培训、期待与您交流! ----------------------
继承(extends):
1,提高了代码的复用性
2,让类与类之间产生了关系,所以才会有多态。
 注意:千万不要为了获取其他的功能,而简化代码继承。
 必须是类与类之间有所属关系才可以继承。is a。

java只支持单继承,不支持多继承。
多继承隐患:父类定义相同功能时,但内容不同,子类不确定运行那一个。
但java用另一种体现形式来完成,多实现。

java支持多层继承,一个继承体系。(子类必须继承父类的所有功能和变量)
想使用体系,先查阅体系中父类的描述。父类中是共性的功能。
在具体调用时,要创建最子类的对象,为什么呢?1,
1,有可能父类不能创建对象。
2,创建子类对象可以使用更多的功能。基本和共有的


聚集:has a
1,变量
如果子类中出现非私有的同名成员变量时.
子类要访问本类中的变量,用this,
子类要访问父类中的同名变量,用super.

覆盖:
1,子类覆盖父类,子类权限必须大于或等于父类,才可以覆盖(父类及其功能不能私有不然不能覆盖)
2,静态只能覆盖静态。

重载:看同名函数的参数列表。
重写:子父类方法一模一样。


为什么子类一定要访问父类中的构造函数。
 因为父类中的数据子类可以直接获取,所以子类子类对象在建立时,需要
 先查看父类中如何对这些数据进行初始化的。
 所以子类在对象初始化时,要先访问一下父类中的构造函数。
 如果要访问父类中指定的构造函数,可以通过手动定义super语句的方式来指定。


子类的实例化过程。
 结论:
 子类的所有的构造函数,默认都会访问父类中的空参数函数。
 因为子类每一个构造函数内第一行都有一句隐式的super();
 当父类中没有空参数的构造函数时,子类必须手动通过super语句形式来指定要访问父类中的构造函数

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

抽象类的特点:(多个类出现相同功能,但功能主体不同,进行抽取,这时只抽取功能定义,而不抽取功能主题)
1,抽象方法一定在抽象类中。
2,都被abstract修饰
3,抽象类不可以用new创建对象(不能实例化),因为调用抽象方法没意义。
4,抽象类中的抽象方法必须由子类复写所有的抽象方法后建立子对象
 如果只覆盖了部分抽象方法,那么该子类还是一个抽象类。

格式:
abstract class Student
{
 abstract void study();
}

抽象类中可以不定义抽象方法,这样做仅仅是为了不让该类建立对象。


模版方法设计模式
在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分
那么这时就将不确定的部分暴露出去,由该类的子类去完成。

例子:

 

abstract class GetTime{ public final(这个代码不用复写,所以加上final) void getTime() {  long start = System.currentTimeMillis();  runcode();  long end = System.currentTimeMills();  System.out.println("毫秒:"+(end-start)); } public abstract void runcode();}class SubTime extends GetTime{ public void runcode() {  for(int x=0; x<4000;x++)  {   System.out.print(x);  } }}


接口:
1,接口中常见的定义:常量,抽象方法.
2,接口中的成员都有固定的修饰符
 常量:public static final
 方法:public abstract
3,接口对外暴漏,是程序的功能扩展。
记住:接口中的成员都是public的 实现的子类的成员的也是public

接口:不可以创建对象,因为有抽象方法、
 需要被子类全部实现,不然子类仍是一个抽象类.


接口子类支持多实现,接口与接口之间间还可以多继承,子类还可以继承一个类时实现接口。
---------------------- android培训、java培训、期待与您交流! ---------------------

原创粉丝点击