标签:
- 继承:继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
提高了代码的复用性。让类与类之间产生了关系,有了这个关系,才有了多态的特性。Java语言中,Java只支持单继承,不支持多继承,因为多继承容易带来安全隐患。但是Java保留了这种机制,叫做多实现。(若支持多继承,当多个父类中定义了相同的函数,但其内容不一样,子类调用此方法时,就不知道会调用哪一个父类中的方法)
注意:千万不要为了获取其他类的功能,简化代码而去继承。必须是类与类之间有所属关系才可以继承。
- Java支持多层继承,也就是一个继承体系。当我们要使用一个体系的时候,要先查阅父类的描述,因为父类中定义的是该体系中的共性功能。通过了解共性功能,就可以知道该体系的基本功能,那么这个体系就可以基本使用了。在具体调用的时候,要创建最子类的对象,因为有可能父类不能创建对象(比如,抽象类)。还有就是创建子类可以使用更多的功能,包括基本的也包括特有的。
总结:查阅父类功能,创建子类对象使用功能。
- 如果子类中出现非私有的同名成员变量时,子类要访问本类中的变量,用this,要访问父类中的变量,用super。
super的使用与this基本一致。前者代表父类对象的引用,后者代表子类对象的引用。
- 当子类出现和父类一模一样的函数时,当子类对象调用该函数,会运行子类函数的内容。如同父类的函数被覆盖一样。这种情况叫做函数的重写。
当子类继承父类,沿袭了父类的功能到子类中。但是子类虽具备该功能,但是功能的内容却和父类不一致。这时,没有必要定义新功能,而是使用重写,保留父类的功能定义,并重写功能内容。
注意:子类覆盖父类,必须保证子类权限不低于父类权限,才可以覆盖,否则编译失败。
静态只能覆盖静态。
- 子父类中的构造函数:在对子类对象进行初始化时,父类的构造函数也会运行。那是因为子类的构造函数默认第一行有一行隐式的代码super();。此代码会访问父类中空参数的构造函数,而且子类中所有的构造函数都会默认第一行有这行代码。
- 为什么子类一定要访问父类中的构造函数:因为父类中的数据子类可以直接获取,所以子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的,所以子类对象对这些数据进行初始化时,要先访问父类中的构造函数。如果要指定访问父类中的构造方法,可以用super()显示来指定。
注意:super语句一定要定义在子类构造函数的第一行。
结论:子类的所有的构造函数,默认都会访问父类中空参数的构造函数,因为子类每一个构造函数内的第一行都有一句隐式super();,当父类中没有空参数的构造函数时,子类必须显示通过super语句的形式来指定访问父类中的构造函数。
- final关键字:最终。是一个修饰符。可以修饰类,函数,变量。被final修饰的类不可以被继承(为了避免被继承后被子类复写功能)被final修饰的方法,不能被复写。被final修饰的变量是一个常量,只能赋值一次,成员变量跟局部变量都能够修饰(当在描述事物时,一些数据的出现值时固定的,那么为了增加代码的阅读性,都给这些值起个名字,方便于阅读,而这个值不需要改变,所以加上final修饰符)
- 内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量。
- 抽象类(abstract class):abstract也可以用来修饰方法,抽象方法一定在抽象类中(如果一个不是抽象类的类中有一个抽象方法,当此类产生了对象并调用了此抽象方法,是不会有一个合理结果的),抽象方法和抽象类都必须被abstract关键字修饰。抽象类中不可以用new创建对象,因为调用抽象方法没有意义。抽象类中的方法要被使用,必须由子类复写所有的抽象方法后,建立子类对象调用。如果子类只覆盖部分抽象方法,那么该子类还是一个抽象类。
- 模板方法设计模式:在定义功能时,功能的一部分是确定的,但是有有一部分是不确定的,而确定的部分在使用不确定的部分。那么此时就将不确定的部分暴露出去,由此类的子类去完成。
- 接口(interface):是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。接口中的常量一般用public static final所修饰,方法用public abstract修饰。(接口中的成员都是public的)
接口跟抽象类一样,是不能被实例化的,因为里面具有抽象方法,接口需要被子类实现(implements)且子类要重写接口中的所有抽象方法,子类才能被实例化。
- 接口可以被多个类实现,也就是对不支持多继承的一种转换形式,多实现。因为在接口中的方法没有方法主体,所有当一个类实现的多个接口中有相同的方法,那么实现类中只需要重写一次方法,即重写了所实现的所有接口中的抽象方法。接口也可以继承接口,但是,接口间存在多继承,原因同样是所有方法都没有主体。
- 一个类可以在继承一个类的同时,再去实现多个接口。
总结:a. 接口是对外暴露的规则。b. 接口是程序的功能拓展。c. 接口可以用来多实现。
d.类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。
e. 接口与接口之间可以有继承关系,也可以有多继承关系。
- 实现接口主要作用是对类扩展功能,继承抽象类是使用共同的特征和行为
新手初步学Java,正在JavaSE中,每天留下我当天学习所得跟笔记,希望大家能够多多批评与指教,促进共同进步!第七天!
标签:
原文地址:http://www.cnblogs.com/yishiluo/p/4944669.html