java多态子父类的构造器、成员变量、方法的调用关系
1.结论
①:成员变量没有多态,方法才有多态
Father gay = new Son();
gay.money 是属于父类的
((Son) gay).money 才是子类的
②:Father gay = new Son(); 在执行时,会先调用父类无参构造。除非指定super(参数)方法。
③:只有被重写的方法,使用gay.xxx()调用的才是子类的!
还有更多结论 代码一跑就知道了
public class B {public B() {System.out.println("B的构造器");}public static void main(String[] args) {Father gay = new Son();System.out.println("属性没有多态,son的money: " + ((Son) gay).money);System.out.println("属性没有多态,father的money: " + gay.money);System.out.println("-----------------------------");System.out.println("-----------------------------");gay.show(); //调用的是子类重写后的方法,如果想使用父类的,必须new 父类的对象((Son) gay).showmoney(); //调用的是子类的方法gay.showmoney(); //调用的是父类private的方法gay.showfather(); //调用父类方法((Son) gay).showson(); //都用的是子类方法System.out.println("-----------------------------");System.out.println("-----------------------------");Father son = new Son(5);System.out.println("属性没有多态,son的money: " + ((Son) son).money);System.out.println("属性没有多态,father的money: " + son.money);}static class Father {public int money = 1;public Father(int money) {money = 5;System.out.println("father 有参构造");}public Father() {money = 2;showmoney();show();showfather();}private void showmoney() {System.out.println("father --showmoney() 私有方法不会被重写");}public void show() {System.out.println("father---show() public的重名方法会被子类重写,只调用子类的");}public void showfather() {System.out.println("father --showfather() 父类特有的方法 会被调用");}}static class Son extends Father {public int money = 3;public Son(int money) {// super(money);money = 6;System.out.println("son 有参构造");}public Son() {money = 4;showmoney();showson();show();}public void showmoney() {System.out.println("son --showmoney() 子类和父类重名的方法,如果父类private,子父类都调用");}public void showson() {System.out.println("son --showson() 子类特有的方法 会被调用");}public void show() {System.out.println("son---show() public的重名方法会被子类重写,只调用子类的");}}}
java多态子父类的构造器、成员变量、方法的调用关系相关推荐
- java子类和父类有相同成员_Java -- 父类和子类拥有同名的成员变量的情况
Java – 父类和子类拥有同名的成员变量取值情况 参考文章 结论: 当子类的成员变量与父类同名时,若对该成员变量进行操作的方法继承于父类,则改变和获取的是父类的成员变量.若对该成员变量进行操作的方法 ...
- Java学习 第十五章 成员变量和局部变量的区别 / 三大特征之一 (封装性)/构造方法 /private关键字
第十五章 局部变量和成员变量: 1.定义位置不一样 局部变量:在方法内部定义 成员变量:在方法的外部,直接写在类当中 2.作用范围不一样 局部变量:只能在方法当中使用 成员变量:整个类都可以使用 3. ...
- java getfield_Java Class.getField()/getDeclaredField()返回成员变量
首页 > 基础教程 > 反射 > Reflection API Java Class.getField()/getDeclaredField()返回成员变量 Class.getFie ...
- [转载] 面试题:说说Java中接口、类、成员变量、成员方法、构造方法有哪些访问修饰符和他们的作用范围
参考链接: Java中的访问修饰符 * 问题:说说Java中接口.类.成员变量.成员方法.构造方法有哪些访问修饰符和他们的作用范围 * 答:接口的访问修饰符只有public 1个 * 类的访问修 ...
- (09)System Verilog 父类与子类成员变量同名冲突
(09)System Verilog 父类与子类成员变量同名冲突 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog 父类与子类成员变量同 ...
- java系列8:private修饰的成员变量怎么传参
可以使用getter,setter方法 package drchen.java.day06.demo04;public class Student {// 成员变量private String nam ...
- java成员变量默认是_在Java语言中,String类型的成员变量的默认初始值是( )
在Java语言中,String类型的成员变量的默认初始值是( ) 答:C.null 学生最主要的权利是() 答:受教育权 提倡教育要适合孩子的 "敏感期"的教育家是 答:蒙台梭利 ...
- 重学Java(035)——Java基础知识(类作为成员变量、接口作为成员变量、接口作为方法参数和返回值类型)
学习内容:三种引用类型用法 一.类作为成员变量 二.接口作为成员变量 三.接口作为方法参数和返回值类型 实际的开发中,引用类型的使用非常重要,也是非常普遍的.我们可以在理解基本类型的使用方式基础上,进 ...
- java -----多态:父类引用指向子类对象
生活中的人物视角 程序中的多态 概念:父类引用指向子类对象,从而产生多种形态 一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定 比 ...
最新文章
- hadoop分布式文件系统hdfs的概念和特性
- Python中的Numpy(5.numpy排序)
- Hadoop中通过ToolRunner和Configured实现直接读取命令行动态出入reduce task数量,jar文件等
- python编写脚本替换 jar包文件_shell-替换jar包中配置文件脚本
- js 提取某()特殊字符串长度
- 计算机应用的问答题,计算机应用技术问答题(一)
- cesium+ geoserverTerrainProvide+png展示3D高程图展示
- idea运行android usb调试,IntelliJ IDEA
- 不读后悔:风口上的仓储自动化
- ATV930变频器转矩控制如何设置?
- 团队协作工具调研笔记
- Mysql 关闭3306端口设置远程访问
- 平价的蓝牙耳机哪家质量好?学生党公认的五款高品质蓝牙耳机
- mac dreamveaver cc破解方法
- Easymock十分钟入门
- MongoDB数据迁移之迁移工具Kettle
- Onion-Peel Networks for Deep Video Completion
- 【Windows8开发】关于WinRT组件,WinRT dll,Win32 dll,WinRT exe组件的一些尝试
- jQuery插件Magnify放大镜实现javascript图片放大功能
- 必读的数据库领域论文