From 5b0d0bec495d8b65f3c31ef9d72378fd8d6c65f8 Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Fri, 23 Jan 2026 16:59:11 +0800 Subject: [PATCH] =?UTF-8?q?day09-=E5=A4=9A=E6=80=81=E4=B8=AD=E6=88=90?= =?UTF-8?q?=E5=91=98=E7=9A=84=E8=AE=BF=E9=97=AE=E7=89=B9=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- day10/src/com/inmind/duotai08/Demo08.java | 34 ++++++++++++++++++++++- day10/src/com/inmind/duotai08/Fu.java | 2 ++ day10/src/com/inmind/duotai08/Zi.java | 3 ++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/day10/src/com/inmind/duotai08/Demo08.java b/day10/src/com/inmind/duotai08/Demo08.java index 1dc1bd6..0cc43c7 100644 --- a/day10/src/com/inmind/duotai08/Demo08.java +++ b/day10/src/com/inmind/duotai08/Demo08.java @@ -6,13 +6,45 @@ package com.inmind.duotai08; 继承或者实现【二选一】 类与类的继承 实现类与接口的实现 方法的重写【意义体现:不重写,无意义】 父类引用指向子类对象【格式体现】 +--------------------------------------------------- +在多态中,成员变量和成员方法的访问特点 +在多态中,成员变量的访问特点: +1.直接通过对象访问变量,对象创建语句中,=左边是谁,就优先使用谁的成员变量,如果没有则向上找 +2.通过对象调用成员方法,间接访问成员变量,方法属于谁,就优先使用谁的成员变量,如果没有则向上找 + +在多态中,成员方法的访问特点: +1.编译看左边,运行看右边(在多态里面,方法的调用只能调用父类拥有的方法,而子类中独有的方法是不能调用) +2.通过对象直接访问成员方法时,new 后是谁,就优先使用谁的成员方法,没有则向上找。 + +多态的格式: +父类 对象名 = new 子类对象();//多态,父类和子类的关系也可以使用接口(父类)和实现类(子类)的关系来操作 + +一定要注意:编译看左边,运行看右边。 +多态中:代码的书写时,父类中没有的变量和方法是不能写的,因为编译看左边,编译器会直接报错 + */ public class Demo08 { public static void main(String[] args) { Zi zi = new Zi();//不是多态,只是简单的面向对象 - Fu fu = new Zi();//父类引用指向子类对象【格式体现】 + Fu fu = new Zi();//是多态:父类引用指向子类对象【格式体现】 fu.methodFu(); fu.method();//多态写法 //多态是为了更好的封装,是动态的框架设计技术,扩展 + System.out.println("---------------多态中成员变量的访问特点---------------"); + //对象直接访问 + System.out.println(fu.numFu);//10 + System.out.println(fu.num);//20 + //由于多态中编译看左边 + fu.methodFu(); + //fu.methodZi();//Fu类中没有methodZi()方法定义,所以在编译时期就无法调用 + System.out.println("---------------多态中成员方法的访问特点---------------"); + /* + 在多态中,成员方法的访问特点: + 1.编译看左边,运行看右边(在多态里面,方法的调用只能调用父类拥有的方法,而子类中独有的方法是不能调用) + 2.通过对象直接访问成员方法时,new 后是谁,就优先使用谁的成员方法,没有则向上找。 + */ + fu.methodFu(); + fu.method(); + //fu.methodZi();//错误:编译看左边 } } diff --git a/day10/src/com/inmind/duotai08/Fu.java b/day10/src/com/inmind/duotai08/Fu.java index 8f41398..11a4b81 100644 --- a/day10/src/com/inmind/duotai08/Fu.java +++ b/day10/src/com/inmind/duotai08/Fu.java @@ -5,6 +5,8 @@ public class Fu { int num = 20; public void methodFu(){ + System.out.println(numFu); + System.out.println(num); System.out.println("父类的methodFu方法"); } diff --git a/day10/src/com/inmind/duotai08/Zi.java b/day10/src/com/inmind/duotai08/Zi.java index 25a4514..594883d 100644 --- a/day10/src/com/inmind/duotai08/Zi.java +++ b/day10/src/com/inmind/duotai08/Zi.java @@ -5,6 +5,9 @@ public class Zi extends Fu{ int num = 40; public void methodZi(){ + System.out.println(numFu); + System.out.println(num); + System.out.println(numZi); System.out.println("子类的methodZi方法"); }