----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
Blog_13_1 继承
继承:多个类中存在相同的属性或者是行为时,将这些相同的属性或者行为抽取到单独的一个类中,那么这多个类就无需再定义这些属性或者行为,直接让多个类与那个类产生一个关系,这个关系就叫继承。
继承的好处:提高了代码的复用性,让类与类之间产生了关系是多态的前提。
注意:不要为了使用某一个方法而去继承另外一个类。
什么时候使用继承呢?--当一个类和另外一个类有”is a”关系的时候,就可以考虑使用继承了。如狗是动物的一种,这时就可以用狗继承动物。当一个车辆类中有一个run()方法,一个狗类中也有一个run(),方法时这时我们不能为了省写狗类中的run()方法,而让狗类去继承车辆类。
继承间的成员变量的关系:
(1)成员变量关系:
A. 子类和父类中的成员变量不同:该用谁就用谁;
B. 子类和父类中的成员变量有相同的时:先在局部范围查找,如找到则用局部,如果没找到,则在本类成员位置查找,找到则用,若还是没找到,则到父类的成员位置去查找,找到则用。
那怎样在子类中调用父类和成员位置的变量呢?
当局部变量和成员变量一样,而我们又要使用成员变量时,我们使用this关键字来调用成员位置的变量。
当子类中存在和父类中一样的成员变量时,而我们又想在子类中调用父类的成员变量,这时可以使用super关键字调用。
This的实质是:本类的一个对象;
Super的实质是:父类的一个对象;
在静态方法中不能使用this和super。
(2)有继承关系时构造方法需要注意事项
特点:在初始化子类之前,先初始化父类的数据。
A. 子类会默认调用父类的无参数构造函数。子类每一个构造方法中第一条语句默认是super();(注意super();此时并没有创建父类的对象)。
B. 一旦手动给出构造函数,系统将不会默认提供无参数构造方法;若子类要调用父类中的带参数构造则用super(参数…)
C. 对于如
class A{
System.out.println(“A”);
}
class B extends A{
System.out.println(“B”);
}
表面上是没有构造函数,但编译却能通过,原因是在编译时编译器能自动把每个类的无参数构造方法加上。
(3)成员方法关系:
A.方法声明不同的用谁就调谁;
B.方法声明相同时(即为方法重写),先在子类中查找,有则使用。如果没有,则在父类中查找,有则使用,无则继续往上查找,都没找到则报错。
方法重写需要注意事项:
A. 私有方法不能被重写
B. 子类中重写的方法权限要大于父类方法权限
C. 静态方法只能被静态方法重写。
方法重写和方法重载的区别:
A. 所在位置不一样,方法重载是在一个类中,而方法重写发生在有继承关系的来。
B. 方法重写,在父类和子类中方法声明一模一样,而方法重载只要求方法名一样,参数列表不一样(和返回值类型无关)。
Final关键字的作用:
1. final修饰的方法不能被重写
2. final修饰的类不能被继承
3. final修饰的成员变量是常量不能被更改
Blog_13_2 多态
多态:同一个对象,在不同时刻表现出来的多种状态。
多态的前提:
A.要有继承,或者实现关系;
B.要有父类引用指向子类;
C.要有方法的重写。
多态的好处和弊端:
好处:提高代码的的复用,和提高程序的扩展性,尽量不要使用具体的东西。
弊端:不能访问子类特有的功能(ps.若要使用把父类引用进行强制转换)。
多态中的成员特点:
成员变量:父类引用只能调用到父类中的成员变量。
成员方法:若子类中有重写方法,父类引用只能调用到子类中的重写方法。
多态的表现形式:具体类多态、抽象类多态、接口类多态;在抽象类和接口中多态的形式使用得更多。
多态的使用口诀:
Fuf = new Zi();
A:成员变量 编译看父类,运行看父类
B:成员方法 编译看父类,运行看子类
C:静态方法 编译看父类,运行看父类(静态的方法其实不叫重写)
Blog_13_3接口成员特点与抽象类
接口:如果一个类中的所有方法都是抽象的这时java就提供了一种更为抽象的表示形式接口。
抽象类成员特点:
A. 成员变量:可以是常量,也可以是变量,可以被static修饰,也可以不被static修饰。
B. 成员方法:抽象类中可以有抽象方法,也可以有非抽象方法。
C. 构造方法:抽象类虽然不能被实例化,但其还是有构造函数,用于子类向父类初始化数据。
接口成员特点:
A.成员变量:都是常量而且都被static修饰(默认修饰符是public static final)
B. 成员方法:都是抽象方法,而且都是公共的(public修饰)。
C. 构造方法:没有构造方法(如果有构造方法的话,它肯定有方法体,和接口中的方法都是抽象的相悖,所以接口中没有构造方法)。
接口的思想特点:
1. 降低耦合性
2. 增强扩展性
3. 接口可以多实现
4. 对外暴露规则
类与接口的关系:
类与类的关系:单继承关系,可以多层继承;
类与接口的关系:实现关系,可以多实现;
接口与接口的关系:可以多继承。(最后实现此接口的类要实现包括此接及此接口父类的所有抽象方法)
----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------
详情请查看: