Java通过单继承降低复杂度,又通过对接口的实现间接地实现多继承。
<span style="font-size:18px;">/**
* @author frozen cloud
* @继承是面向对象的又一个重要特征,Java使用extends关键字类实现继承,java是单继承。
* @被final关键字和private修饰的成员不可以被继承;
*/
public class ExtendsKeyWord {
public static void main(String[] args) {
// 没有显示的调用super但是父类的构造方法依然被调用
Child child = new Child();
child.show();
// 显示的调用super,父类的构造方法被调用
Child child1 = new Child("name1", "age1");
child1.show();
// 子类调用父类的成员,子类中的age由20变为25
Child child3 = new Child("name2", "age2", "男");
// 用父类的对象访问子类的成员
Parent parent = new Child("name3", "age3");
parent.show();
}
}
class Parent {
private String name;
public String age;
public final String hold = "hold";
public Parent() {
System.out.println("调用了父类的构造方法");
}
public Parent(String name, String age) {
this.name = name;
this.age = age;
System.out.println("调用了父类的有参构造方法");
}
public void show() {
System.out.println("姓名:" + name + " 年龄:" + age);
System.out.println("+==================+");
}
public final void sing() {
System.out.println("不允许被覆盖的父类方法");
}
}
class Child extends Parent {
private String sex;
String age = "20";
public Child() {
System.out.println("调用了子类的构造方法");
}
public Child(String name, String age) {
super(name, age);
System.out.println("调用了子类的有参构造方法");
}
public Child(String name, String age, String sex) {
super(name, age);
super.age = "25";
System.out.println("调用了子类的有参构造方法");
show();// 调用父类方法
}
}
</span>