本帖最后由 凤凰城nash 于 2015-12-25 22:17 编辑
* 继承
** 格式: class 子类名 extends 父类名 {}
** 特点:
* 在java语言中只支持单继承不支持多继承
* 在java语言中支持多层继承
** 注意事项: * 子类只能继承父类中非私有的成员
* 父类中的构造方法,子类不能继承,但是可以通过super去访问父类的构造方法
* 不要为了某一些功能去使用继承
class A {
public void show1(){}
public void show2(){}
}
class B {
public void show2(){}
public void show3(){}
}
class B extends A {
public void show3(){}
}
什么时候去使用继承?
继承体现的是一个"is a"的关系
举例:
动物
猫
狗
** 继承的好处:
* 提高了代码的复用性
* 提高了代码的维护性
* 让类和类产生了关系,是多态的前提
** 继承的弊端: 增强了耦合性
开发原则: 高内聚 , 低耦合
内聚: 就是某一个类完成某一件事情的能力
耦合: 类和类之间的关系
** 继承中的成员访问问题:
* 成员变量
变量的访问遵循一个"就近原则"
查找顺序:
a: 在子类局部位置查找
b: 在子类的成员位置查找
c: 在父类中的成员位置查找
d: 就报错了
this 和 super 的区别:
this : 表示的是本来对象的一个引用 , 谁调用我,我就代表谁
super: 表示的是父类存储空间的一个标示(理解: 可以认为其实就是父类对象的一个引用)
this 和 super 访问成员的格式
* 成员变量
this.变量名 访问本类的成员变量
super.变量名 访问父类的成员变量
* 构造方法
this(...) 访问的是本类中的构造方法
super(...) 访问的是父类中的构造方法
* 成员方法
this.方法名(...) 访问的是本类中的成员方法
super.方法名(...) 访问的是父类中的成员方法
* 构造方法:
** 子类在初始化的时候都需要默认调用父类中无参的构造方法,完成父类数据的初始化
** 其实每一个构造方法的第一条语句默认就是 super() ;
class Student {
public Student(){
super() ;
}
}
** this(...)和 super(...) 必须是构造方法的第一条语句
* 成员方法
查找顺序:
a: 在子类的成员位置查找
b: 在父类的成员位置查找
c: 就报错了
|
|