输出类的代码如下
dog LbLd = new dog();//创造一个子类的对象
LbLd.name="拉布拉多";//给子类的对象赋值
System.out.println("=======");
LbLd.js();//可以通过对象名.方法名执行方法
动物 dw=LbLd;//将父类的引用指向了子类的对象,将LbLb对象的地址给了dw,所以dw输出代码的时候是按着这个地址来的
//dw这个对象属于动物类,它只能调用动物类的方法及属性
dw.js();//调用了动物类的js()方法,代码在寻找js()方法时先找到了dog类的js()方法所以输出dog类
动物 dw1 = new dog();//dw1属于动物类
((dog) dw1).jss();//强制类型转换,子类有父类没有
System.out.println("====");
dw1.js();//哈士奇,调用了动物类的js()方法,代码在寻找js()方法时先找到了dog类的js()方法所以输出dog类
((dog) dw1).name="中华田园犬";//强制给子类属性赋值
dw1.js();
}
}
父类与子类的代码如下
dog LbLd = new dog(); 1.将dog类的其中一个地址为dog@110给LbLd
LbLd.name="拉布拉多" 2.dog@110这个地址的name已经被赋值为拉布拉多
LbLd.js();// 3.在地址为dog@110输出js方法
动物 dw=LbLd 4.将LbLd的地址赋给dw,使dw也是走dog@110这个地址代码
dw.js(); 5.在地址为dog@110输出js方法
动物 dw1 = new dog(); 1.将dog类的其中一个地址为dog@888给dw1,但是此时此刻的dw1还是属于动物类但是他能走dog类的地址,因为它们有继承关系
dw1.js(); 2.走地址为dog@888的js方法
如果要走子类有的父类没有的只能进行强制转换(属性与方法)
左侧的类不同,所产生的地址也就不同,地址不同所执行的代码也就不同
多态就是可以new同一个类,但是代码进入的地址有多个不同,也就是称为'将父类的引用指向了子类的对象
控制台输出如下
标签:dw1,表现形式,Demo57,子类,dog,多态,地址,dw,js From: https://www.cnblogs.com/CHX249/p/16857476.html