當子類與父類中存在同名的成員變量時子類中會隱藏父類中的同名成員變量。
什麼是向上轉型?
將子類的對象賦給父類的對象,這種操作我們稱之爲向上轉型。(個人理解)
public class SuperClass{}
public class SubClass extends SuperClass{}
SuperClass superClass = null;
superClass = new SubClass();
向上轉型後我們將不能操作子類新增的成員變量和子類新增的方法,可以操作子類繼承或重寫的方法和子類繼承或隱藏的成員變量
demo
/**
* Created by liuquan on 2020/3/28.
*/
public class SuperClass {
static int age = 10;
String name = "super";
String getInfo(){
return "super";
}
String getCurrentName(){
return this.name;
}
}
public class SubClass extends SuperClass{
static int age = 20;
String name = "sub";
String addr = "湖北";
String getInfo(){
return "sub";
}
String getUserName(){
return "userName";
}
String getCurrentName(){
return this.name;
}
}
/**
* Created by liuquan on 2020/3/28.
*/
public class TestTypeConversion {
public static void main(String[] args){
SubClass subClass = new SubClass();
System.out.println("subClass.getInfo():"+subClass.getInfo());
System.out.println("subClass.getCurrentName():"+subClass.getCurrentName());
System.out.println("subClass.getUserName():"+subClass.getUserName());
System.out.println("subClass.name:"+subClass.name);
System.out.println("subClass.age:"+subClass.age);
System.out.println("subClass.addr:"+subClass.addr);
System.out.println("");
SuperClass superClass = new SubClass();
System.out.println("superClass.getInfo():"+superClass.getInfo());
System.out.println("superClass.getCurrentName():"+superClass.getCurrentName());
System.out.println("superClass.name:"+superClass.name);
System.out.println("superClass.age:"+superClass.age);
//System.out.println("superClass.age:"+superClass.getUserName());//cannot resolve method 'getUsername()'
//System.out.println("superClass.addr:"+superClass.addr);//cannot resolve symbol 'addr'
}
}