day09-多态中成员的访问特点
This commit is contained in:
@@ -6,13 +6,45 @@ package com.inmind.duotai08;
|
|||||||
继承或者实现【二选一】 类与类的继承 实现类与接口的实现
|
继承或者实现【二选一】 类与类的继承 实现类与接口的实现
|
||||||
方法的重写【意义体现:不重写,无意义】
|
方法的重写【意义体现:不重写,无意义】
|
||||||
父类引用指向子类对象【格式体现】
|
父类引用指向子类对象【格式体现】
|
||||||
|
---------------------------------------------------
|
||||||
|
在多态中,成员变量和成员方法的访问特点
|
||||||
|
在多态中,成员变量的访问特点:
|
||||||
|
1.直接通过对象访问变量,对象创建语句中,=左边是谁,就优先使用谁的成员变量,如果没有则向上找
|
||||||
|
2.通过对象调用成员方法,间接访问成员变量,方法属于谁,就优先使用谁的成员变量,如果没有则向上找
|
||||||
|
|
||||||
|
在多态中,成员方法的访问特点:
|
||||||
|
1.编译看左边,运行看右边(在多态里面,方法的调用只能调用父类拥有的方法,而子类中独有的方法是不能调用)
|
||||||
|
2.通过对象直接访问成员方法时,new 后是谁,就优先使用谁的成员方法,没有则向上找。
|
||||||
|
|
||||||
|
多态的格式:
|
||||||
|
父类 对象名 = new 子类对象();//多态,父类和子类的关系也可以使用接口(父类)和实现类(子类)的关系来操作
|
||||||
|
|
||||||
|
一定要注意:编译看左边,运行看右边。
|
||||||
|
多态中:代码的书写时,父类中没有的变量和方法是不能写的,因为编译看左边,编译器会直接报错
|
||||||
|
|
||||||
*/
|
*/
|
||||||
public class Demo08 {
|
public class Demo08 {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
Zi zi = new Zi();//不是多态,只是简单的面向对象
|
Zi zi = new Zi();//不是多态,只是简单的面向对象
|
||||||
Fu fu = new Zi();//父类引用指向子类对象【格式体现】
|
Fu fu = new Zi();//是多态:父类引用指向子类对象【格式体现】
|
||||||
fu.methodFu();
|
fu.methodFu();
|
||||||
fu.method();//多态写法
|
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();//错误:编译看左边
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ public class Fu {
|
|||||||
int num = 20;
|
int num = 20;
|
||||||
|
|
||||||
public void methodFu(){
|
public void methodFu(){
|
||||||
|
System.out.println(numFu);
|
||||||
|
System.out.println(num);
|
||||||
System.out.println("父类的methodFu方法");
|
System.out.println("父类的methodFu方法");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,9 @@ public class Zi extends Fu{
|
|||||||
int num = 40;
|
int num = 40;
|
||||||
|
|
||||||
public void methodZi(){
|
public void methodZi(){
|
||||||
|
System.out.println(numFu);
|
||||||
|
System.out.println(num);
|
||||||
|
System.out.println(numZi);
|
||||||
System.out.println("子类的methodZi方法");
|
System.out.println("子类的methodZi方法");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user