Day11多态部分-6 【1.4 多态的应用以及注意事项】
来源:互联网 发布:一淘网和淘宝联盟 编辑:程序博客网 时间:2024/05/16 00:28
【1.4 多态的应用以及注意事项】
在多态中:父类指向子类对象时
成员函数的特点:
编译看左边 运行看右边
在编译时期 参阅引用型变量所属的类中是否有调用的方法 如果有,编译通过;如果没有, 编译失败
在运行时期 参阅对象所属的类中是否有调用的方法
在堆内存中
实例对象:子类包含父类 子类对父类说"你的就是我的 我的还是我的"
成员方法 动态绑定(根据对象的实际类型确定执行哪个方法)
成员变量的特点:
编译看左边 运行看左边
成员变量不具备多态性 通过引用变量来访问其包含的实例变量
当父类 子类出现重名变量的时候 多态状态下看的是 父类
因为在创建子类对象时 堆内存中其实是有两个变量的
一个是父类的num 一个是子类的num
你再拿父类的引用 去找num的时候 他就找到自己的了
成员变量是静态绑定(只根据当前表示类型决定使用那个变量)
成员变量(属性)不算重写 父类中已经有属性了 就不调用子类属性了
静态成员函数
编译看左边 运行看左边 静态绑定 绑定在方法所属的类上了
总结:*****
成员方法 编译看左边 运行看右边
成员变量 编译看左边 运行看左边
静态成员方法 编译看左边 运行看左边
package Day11;
public class Test_05 {
public static void main(String[] args) {
MainBoard mb = new MainBoard();
mb.run();
// mb.useNetCard( );
// mb.useSoundCard( );
mb.useNetCard(new NetCard());//没必要创建引用了
mb.useSoundCard(new soundCard());
}
}
interface PCI {
public void open();
public void close();
}
class NetCard implements PCI {
public void open() {
System.out.println("启动网卡");
}
public void close() {
System.out.println("关闭网卡");
}
}
class soundCard implements PCI {
public void open() {
System.out.println("关闭声卡");
}
public void close() {
System.out.println("关闭声卡");
}
}
class MainBoard {
public void run() {
System.out.println("启动主板");
}
public void useNetCard(NetCard n) {//引用子类的方法
n.open();
n.close();
}
public void useSoundCard(soundCard n) {//引用
n.open();
n.close();
}
//接口型引用,指向自己的子类对象,接口不能创建对象,只能用子类
public void usePCI(PCI p) {//PCI p= new NetCard()....
if (p != null) {//如果有什么传入进来就显示什么
p.open();
p.close();
}
}
}
- Day11多态部分-6 【1.4 多态的应用以及注意事项】
- Day11多态部分-3
- Day11多态部分-4
- Day11多态部分-5
- Day11多态部分-1 【1.1 多态的体现】
- Day11多态部分-2 【1.2 多态的前提】
- Day11多态部分-2-1
- Day11多态部分-6 【1.5 多态的好处和弊端】
- Day11多态部分-6 【1.3 对象的向上转型和向下转型】
- C++多态以及其注意事项
- 使用多态的注意事项
- C++多态部分以及虚函数虚表总结
- 黑马程序员---多态的应用以及object类介绍
- set集合的应用及注意事项以及案例详解
- coreseek(sphinx)的简单应用以及在LAMP中的注意事项
- coreseek(sphinx)的简单应用以及在LAMP中的注意事项
- img标签的onerror事件(应用以及注意事项)
- 开发中使用临时表的应用场景以及注意事项
- 中序遍历+后序遍历/前序遍历构建二叉树
- bzoj 2429: [HAOI2006]聪明的猴子(最小生成树)
- [paper]End-to-End Training of Hybrid CNN-CRF Models for Stereo
- 6.5 接口回调
- 11/24 C/C++/Python程序bainchen
- Day11多态部分-6 【1.4 多态的应用以及注意事项】
- PAT乙级1047 编程赛团体
- dll转换成.a /dll转换lib
- Openwrt自定义Luci
- Android Studio导入第三方jar包
- KindEditor Asp版 上传图片自动压缩
- Day11多态部分-6 【1.5 多态的好处和弊端】
- Jenkins项目实战之-钉钉提醒插件二次开发举例
- struts2入门程序(一)