diff --git a/day10/src/com/inmind/duotai_member09/Demo09.java b/day10/src/com/inmind/duotai_member09/Demo09.java new file mode 100644 index 0000000..1de814b --- /dev/null +++ b/day10/src/com/inmind/duotai_member09/Demo09.java @@ -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();// 编译器找不到 + + } +} diff --git a/day10/src/com/inmind/duotai_member09/Fu.java b/day10/src/com/inmind/duotai_member09/Fu.java new file mode 100644 index 0000000..5b0fccb --- /dev/null +++ b/day10/src/com/inmind/duotai_member09/Fu.java @@ -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("父类方法"); + } +} diff --git a/day10/src/com/inmind/duotai_member09/Zi.java b/day10/src/com/inmind/duotai_member09/Zi.java new file mode 100644 index 0000000..d4972b0 --- /dev/null +++ b/day10/src/com/inmind/duotai_member09/Zi.java @@ -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方法重写了"); + } +}