day10-多态中成员的访问特点

This commit is contained in:
2026-07-27 14:58:36 +08:00
parent cd859f9376
commit 05adc05745
3 changed files with 75 additions and 0 deletions
@@ -0,0 +1,50 @@
package com.inmind.duotai_member09;
/*
多态中成员(成员变量和成员方法)的访问特点
多态是基于继承的,没有继承就没有多态
多态的体现:父类引用指向子类对象。
public class Person{
}
public class Student extends Person{
}
Student s = new Student();//这里没有使用多态
Person p = new Student();//这里才使用了多态
在多态中,成员变量和成员方法的访问特点
在多态中,成员变量的访问特点:
1.直接通过对象访问变量,对象创建语句中,=左边是谁,就优先使用谁的成员变量,如果没有则向上找
2.通过对象调用成员方法,间接访问成员变量,方法属于谁,就优先使用谁的成员变量,如果没有则向上找
在多态中,成员方法的访问特点:
1.编译看左边,运行看右边(在多态里面,方法的调用只能调用父类拥有的方法,而子类中独有的方法是不能调用)
2.通过对象直接访问成员方法时,new 后是谁,就优先使用谁的成员方法,没有则向上找。
多态的格式:
父类 对象名 = new 子类对象();//多态,父类和子类的关系也可以使用接口(父类)和实现类(子类)的关系来操作
一定要注意:编译看左边,运行看右边。
多态中:代码的书写时,父类中没有的变量和方法是不能写的,因为编译看左边,编译器会直接报错
*/
public class Demo09 {
public static void main(String[] args) {
Zi zi = new Zi();//创建子类对象,不是多态
//父类引用指向子类对象
Fu fu = new Zi();//多态
//访问成员变量
//直接通过对象访问变量,对象创建语句中,=左边是谁,就优先使用谁的成员变量,如果没有则向上找
System.out.println(fu.numFu);
//fu.numZi //编译器找不到
//通过对象调用成员方法,间接访问成员变量,方法属于谁,就优先使用谁的成员变量,如果没有则向上找
fu.methodFu();
//fu.methodZi();//编译器找不到
//访问成员方法:编译看左边,运行看右边,通过对象直接访问成员方法时,new 后是谁,就优先使用谁的成员方法,没有则向上找。
fu.methodFu();
fu.method();
//fu.methodZi();// 编译器找不到
}
}
@@ -0,0 +1,12 @@
package com.inmind.duotai_member09;
public class Fu {
int numFu = 10;
public void methodFu(){
System.out.println(numFu);
}
public void method(){
System.out.println("父类方法");
}
}
@@ -0,0 +1,13 @@
package com.inmind.duotai_member09;
public class Zi extends Fu{
int numZi = 20;
public void methodZi(){
System.out.println(numZi);
}
@Override
public void method() {
System.out.println("子类的method方法重写了");
}
}