class 子类 extends 父类 { }
注意:
1.Java只支持单继承,不支持多继承。
2.Java支持多层(重)继承(继承体系)。
3.继承关系一般不希望超过三层,如果超过那么就考虑重构了
三、继承的内容
父类的私有的属性和行为都不能继承,其余都可以。1. 父类和子类成员变量不同名
//不存在同名的情况
class Father {
int a;
int b;
}
class Son extends Father {
int c;
public void func() {
a = 10;
b = 20;
c = 30;
}
}
}
在这里a,b直接访问的父类继承下来的a,b,能够直接进行赋值
2. 父类和子类成员变量同名//父类和子类成员变量同名
class Father {
int a;
int b;
}
class Son extends Father {
int a;
int b;
int c;
public void func() {
a = 10;
b = 20;
c = 30;
}
}
在这里a,b访问的是子类中的a,b
总结:
1.如果访问的成员变量如果子类有,优先访问子类的。
2.如果子类中无,则访问父类中的,如果父类也没有,则编译失败.
3.如果访问子类父类中都有,则优先访问子类的,采用的就是一个就近原则
3.如果同名要访问父类成员方法访问父类的成员:
class Father {
int a;
int b;
}
class Son extends Father {
int a;
int b;
int c;
public void func() {
super.a = 10;
super.b = 20;
c = 30;
}
}
访问父类的方法:
class Father {
public void func1() {
System.out.println("Father: func1");
}
}
class Son extends Father {
public void func1() {
System.out.println("Son: func1");
}
public void func2() {
System.out.println("Son: func2");
}
public void func3() {
super.func1();
func2();
}
}
在这里我们可以用super来指代父类,否则就会遵循就近原则直接访问子类的成员。
注意:
1.super只能在非静态方法中使用
2.在子类方法中,访问父类的成员变量和方法
4.super和this相同点:
1.super是一个关键字,代表父类的存储空间标识。(可以理解为父亲的引用)
2.super和this的用法相似。
3.this代表对象的引用(谁调用就代表谁);
4.super代表当前子类对父类的引用。
5.super();和this();都是在构造函数的第一行,不能同时出现。
不同点:
1.成员变量
this.变量 本类的super.变量 父类的
2.构造方法
this(...) 本类的super(...) 父类的
3.成员方法
this.方法名() 本类的 super.方法名() 父类的
5.继承代码块执行顺序1.父类静态代码块优先执行,然后子类静态代码块执行,静态代码块只执行一次
2.在实例子类对象时,父类实例代码块和父类构造方法紧接着执行.
3.子类的实例代码块和子类构造方法再执行
四、小结你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧