多态语法下Java中成员变量的访问
- 创建一个父类
package Demo05;
public class Fu {
// 成员变量
public String str = "父类成员变量";
// 成员方法
public void showStr(){
System.out.println(str);
}
}
- 创建一个子类
package Demo05;
public class Zi extends Fu {
// 成员变量
public String str = "子类成员变量";
// 成员方法
public void showStr() {
System.out.println(str);
}
}
- 主函数
package Demo05;
import java.sql.SQLOutput;
/*多态中成员变量的访问
*
* 1.直接通过对象名称访问成员变量。
* 等号左边是谁,就优先用谁,没有则向上查找。
* 2.间接通过成员方法访问成员变量。
* 等号右边是谁,就优先用谁,没有则向上查找。
* */
public class Demo01MultiField {
public static void main(String[] args) {
Fu obj = new Zi();
// 使用多态直接访问成员变量
System.out.println(obj.str); // 等号左边是父类成员变量,所以结果是:父类成员变量
// 如果在父类成员中没有str变量,但是子类中有str变量,obj也不会向下访问子类中的str变量。
System.out.println("===========");
// 使用多态间接(通过成员方法)访问成员变量。
obj.showStr(); // 等号右边是子类对象,所以结果是:子类成员变量
// 如果子类中没有该方法,则向上查找父类。
}
}