学习Java中遇到的继承问题
程序员文章站
2023-02-21 10:10:48
子类只能继承父类所有非私有的成员(成员方法和成员变量) 子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法 调用子类构造方法时默认访问父类中无参构造方法(子类初始化之前,一定要先完成父类数据的初始化) 如果在父类中有公有的get/set方法,可以访问到父类中的私有属性:通过显 ......
子类只能继承父类所有非私有的成员(成员方法和成员变量)
子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法
class father { //私有属性 private int num = 10; public int num2 = 20; //私有方法 private void method() { system.out.println(num); system.out.println(num2); } public void show() { system.out.println(num); system.out.println(num2); } } class son extends father { public void function() { //err //num 在 father 中是 private 访问控制 //子类不能继承父类私有成员变量 //system.out.println(num); system.out.println(num2); } } public class extendsdemo { public static void main(string[] args) { son s = new son(); //子类不能继承父类的私有方法 //s.method(); s.show(); s.function(); } }
调用子类构造方法时默认访问父类中无参构造方法(子类初始化之前,一定要先完成父类数据的初始化)
如果在父类中有公有的get/set方法,可以访问到父类中的私有属性:通过显式调用父类带参构造方法
//抽象动物类 abstract class animal { //姓名 private string name; //年龄 private int age; public animal() {} public animal(string name,int age) { this.name = name; this.age = age; } public string getname() { return name; } public void setname(string name) { this.name = name; } public int getage() { return age; } public void setage(int age) { this.age = age; } //定义一个抽象的方法 public abstract void eat(); } //定义具体的狗类 class dog extends animal { public dog() {} public dog(string name,int age) { //试图这样对name和age初始化会报错 //name 在 animal 中是 private 访问控制 //this.name = name; //this.age = age; //通过访问父类带参构造来初始化 super(name,age); } public void eat() { system.out.println("dog"); } } //测试类省略
下一篇: L1-011 A-B