继承
- 子类调用父类方法的原理:
- 首先由引用找到当前的子类对象,在当前的对象里找这个方法,找到了则直接调用,如果没有找到再去父类寻找,找到则调用,若果找不到则继续向上寻找,直到找到object类,如果还是没有找到,说明没有这个方法。
- 重写:当子类与父类同名(方法名,参数等完全相同)的方法,我们称为重写
- 注意:相当于子类的同名方法将父类的方法覆盖了,后果就是不会再去调用父类的方法
- 作用:在不改变父类方法名字的前提下,在父类原有方法的功能基础上,实现一些自己的功能,实现了对原有功能的扩充
- this:是一种引用数据类型,代表当前的对象,保存的是当前对象的地址。
- super:不是一种引用数据类型,但是可以通过super调用父类的成员。
注:
- 私有方法不能被重写
- 子类的同名方法的权限大于等于父类的同名方法
- 静态的方法只能 覆盖 静态的方法
public class Demo10 {
public static void main(String[] args) {
Iphone iphone = new Iphone();
HuaWei huaWei = new HuaWei();
iphone.color = "jin";//调用父类的成员变量
iphone.gui = "gui";//调用自己的成员变量
//iphone.callPhone();//调用父类的成员方法
huaWei.callPhone();
iphone.fangshui();//调用自己的成员方法
}}
//注意:一个类如果没有写父类,默认是object
class Phone extends Object{
//提取到的共同的属性和行为
String color;
int model;
public void callPhone() {
System.out.println("打电话");
}
}
//创建iphone类
//子类 extends 父类
class Iphone extends Phone{
// String color;
// int model;
String gui;
public void fangshui() {
System.out.println("防水");
}
// public void callPhone() {
// System.out.println("打电话");
// }
}
//创建HuaWei类
//子类 extends 父类
class HuaWei extends Phone{
// String color;
// int model;
public void callPhone() {
//this.callPhone();//调到的是本对象的callPhone方法--死循环
super.callPhone();//直接调用的是父类的方法
System.out.println("自己的特有的功能");
}
//特有的方法
public void Niu() {
System.out.println("牛");
}
}