Java父子类在生成对象时的属性关系
来源:互联网 发布:centos多线程下载命令 编辑:程序博客网 时间:2024/06/18 09:37
今天遇到这样一道选择题:
以下程序运行结果是()
public class Child extends Father { public String name = "child"; public static void main(String[] args) { Child c = new Child(); System.out.println(c.getName()); }}class Father { public String name = "father"; public String getName() { return name; }}
A: father B:child C:编译出错 D:运行出错,无输出
编译结果是:father
Java编程思想讲继承语法时说,子类继承父类,会自动得到父类中所有的域和方法。
不知道是不是中文版翻译跟原意有区别,我的理解是子类继承父类,子类可以访问父类的属性和方法(同时受到访问权限的限制),而不是得到。
可分为以下四种情况讨论:
1、子类没有重写父类的方法,调用父类的方法访问一个属性,访问的是父类的属性,因为调用的是父类的方法。
public class Child extends Father { public String name = "child"; public static void main(String[] args) { Child c = new Child(); System.out.println(c.getName()); }}class Father { public String name = "father"; public String getName() { return name; }}
输出:father
2、子类重写父类的方法,调用此方法访问一个属性,访问的是子类的属性,因为此时调用的方法是子类的方法,只有当子类不存在此方法时,才会去父类中寻找
public class Child extends Father { public String name = "child"; public String getName() { return name; } public static void main(String[] args) { Child c = new Child(); System.out.println(c.getName()); }}class Father { public String name = "father"; public String getName() { return name; }}
输出:child
3、父子类中有相同的属性,若要调用父类的属性,则需要使用super.属性 来调用父类中的属性
public class Child extends Father { public String name = "child"; public String getName() { return super.name; } public static void main(String[] args) { Child c = new Child(); System.out.println(c.getName()); }}class Father { public String name = "father"; public String getName() { return name; }}
输出:father
4、若子类没有该属性,则在子类中调用重写的方法访问属性,调用的是父类属性,不需显示使用 super.属性 来调用
public class Child extends Father { //public String name = "child"; public String getName() { return name; } public static void main(String[] args) { Child c = new Child(); System.out.println(c.getName()); }}class Father { public String name = "father"; public String getName() { return name; }}
输出:father
1 0
- Java父子类在生成对象时的属性关系
- Hibernate中父子关系对象的删除
- SpriteBuilder物理对象的父子关系
- Qt 对象间的父子关系
- 集合的父子类关系
- java初学笔记--对象的属性关系
- mysql 查询父子关系的-java
- qt的父子关系和父子类的区别
- JAVA类父子类方法调用关系
- python之自动生成C++的父子双向继承关系
- 类,对象,方法,属性,事件的关系
- Inside Qt Series (十二):Qt对象之间的父子关系
- Inside Qt Series (十二):Qt对象之间的父子关系
- Inside Qt Series (十二):Qt对象之间的父子关系
- Inside Qt Series (十二):Qt对象之间的父子关系
- 触发器有父子关系时的使用
- java测试父子类中的锁对象
- 任务、父子任务的关系在系统中的表示
- 3.18 webgis项目进度小结
- STM32的硬件I2C到底坑不坑?
- 网络维护--路由器设置---fir302c(phicomm)
- python服务器环境搭建(1)——本地服务器准备
- 第2周 项目3 小试循环
- Java父子类在生成对象时的属性关系
- 《编程之法》:最大连续子数组和
- [Python模块学习]用sndhdr模块识别音频格式
- 基于SystemBarTint、BottomNavigationBar实现的一个简单的项目框架
- mysql创建用户和授予权限
- 超级表格教你怎样“零”成本制作签到系统
- Vitamio多媒体开发框架
- 鸟哥的linux私房菜学习笔记《二十八》PAM模块
- 模拟借书系统