java继承关键字super_java学习笔记-继承中super关键字
背景:
在java繼承的概念中我們得知,被聲明為私有的類成員對所屬的類來說仍然是私有的。類之外的任何代碼都不能訪問,包括子類。
super關鍵字的兩種用法:
1.用于調用超類的構造函數;
2.用于訪問超類中被子類的某個成員隱藏的成員;
例:使用super調用超類的構造函數
矩形實體代碼:
public class Rectangular {
private double width;
private double height;
Rectangular(double w,double h){
width=w;
height=h;
}
public double area(){
return width*height;
}
}
矩形子類RectangularArea代碼:
public class RectangularArea extends Rectangular{
public RectangularArea(double w,double h) {
super(w,h);
}
}
測試類DemoSuper代碼:
public class DemoSuper {
public static void main(String[] args) {
// TODO Auto-generated method stub
RectangularArea myboxBoxWeight=new RectangularArea(10, 20);
System.out.println("矩形的面積為:"+myboxBoxWeight.area());
}
}
實驗結果:
由實驗結果我們可知:使用super()成功的調用了父類Rectangular的構造方法,并調用了計算面積的方法area(),間接使用了父類中private成員變量。
ps:父類中的private成員變量還是不能被子類直接調用的,只是通過public方法間接使用了。
例:訪問超類中被子類成員隱藏的成員
上面的這句話聽起來很是繞口,所以我們通過實例來學習。
父類代碼:
public class A {
int i;
}
子類代碼:
public class B extends A{
int i;
B(int a,int b){
super.i=a;
i=b;
}
void show(){
System.out.println("i in superclass:"+super.i);
System.out.println("i in subclass:"+i);
}
}
測試類DemoSuper:
public class DemoSuper {
public static void main(String[] args) {
// TODO Auto-generated method stub
B b=new B(1,2);
b.show();
}
}
實驗結果:
盡管類B中的實例變量i隱藏了類A中的實例變量i,但是使用super可以訪問在超類中定義的實例變量i。當然也可以使用super調用被子類隱藏的方法。
ps:可以參見繼承中的方法重寫。
總結
以上是生活随笔為你收集整理的java继承关键字super_java学习笔记-继承中super关键字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 自定义正则表达式_java中正
- 下一篇: java json相加_JAVA,当某个