Java-向上转型后调用方法和属性的注意事项
/*多态的注意事项
(1)如果子类重写了父类方法, 意味着子类里定义的方法彻底覆盖了父类里同名的方法, 系统将不可能把父类里的方法转移到子类中
补充对(1)的个人理解: 当s向上转型传给了b, b即使想调用自有的方法, 调用的依然是被重写的子类的方法。编译看左边, 运行看右边。
(2)对于实例变量(即属性), 即使子类里定义了与父类完全相同的示例变量, 这个实例变量依然不可能覆盖父类中定义的示例变量, 编译运行均看左边
*/
public class JavaTest {
public static void main(String [] args){
Sub s = new Sub();
System.out.println(s.count); //展示的是Sub类自己的count
s.display(); //display被Sub类重写了, 所以展示的也是自己的count
Base b = s; //多态性
System.out.println(s == b); //传递的是引用, 因此s 和 b 是相等。结果返回true
System.out.println(b.count); //展示的是b自己的count
b.display(); //考察的是虚拟方法的调用, 多态方法的调用: 编译看左边 运行看右边
}
}
//编写一个父类, 仅仅包含一个count属性 和 display函数
class Base{
int count = 10;
public void display(){
System.out.println(this.count);
}
}
//编写一个子类, 也是仅仅包含一个count属性 和 display函数。
class Sub extends Base{
int count = 20;
public void display() {
System.out.println(this.count);
}
}
Java-向上转型后调用方法和属性的注意事项的更多相关文章
- java向上转型的问题
import java.util.Arrays;import java.util.HashSet;import java.util.Set;class A{ private String s1 = & ...
- java 向上转型和向下转型
学习向上转型和向下转型怎么用没多难,但是为什么那样用,我搞了很多次没弄明白.没弄明白的原因是平时学习时之看例子,而例子一般都比较简单,没有对象之间的调用,一般就是一个对象调用自己的方法. 首先看下怎么 ...
- Java向上转型和向下转型(附具体样例)
Java向上转型和向下转型(附具体样例) 熬夜整理的关于Java向上和向下转型的样例,很的通俗易懂哦~~~~ 一 ...
- Java向上转型与向下转型
一.向上转型 例如:Parent p=new Son(); 这样引用p只能调用子类中重载父类的方法:但属性是父类的:如果想调用子类属性的话,可以用getter()方法. 二.向下转型 子类对象的父类引 ...
- Java向上转型的意义
比如我这个程序 public class Testjava{ public static void main(String args[]) { fun(new Student()); fun(new ...
- java 向上转型与向下转型
转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展. 向上转型:子类引用的对象 ...
- java向上转型和向下转型1
在java继承体系中,认为父类(超类)在上层,子类在下层(派生类) ,向上转型就是把子类对象转成父类对象. public class Father { public void eat(){ Syste ...
- java向上转型和向下转型
转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展. 向上转型:子类引用的对象 ...
- java向上转型神解析
向上转型 经典案例 向上转型 向上转型应注意的问题 向上转型的好处 静态方法的调用 经典案例 public class Animal { public void eat(){ System.out.p ...
随机推荐
- shell编程:函数的返回值
函数的返回值两种形式 return 0-255 0表示成功,1-255表示失败-------通常用于判断 echo 返回一个字符串------------通常用于返回一个执行的结果 return.sh ...
- c# 盖尔-沙普利算法的改进
盖尔-沙普利算法 “盖尔-沙普利算法”(the Gale-Shapley algorithm),也被称为“延迟接受算法”(deferred-acceptance algorithm),简称“GS算法” ...
- React 16.4 生命周期
补一下 React 16.4版本的生命周期图
- Android中XML的命名空间、自定义属性
命名空间(namespace) XML 命名空间提供避免元素命名冲突的方法. 举个例子,A学校有名学生叫做林小明,B学校也有名学生叫林小明,那我们如何识别这两名拥有相同名字的同学呢?这时候命名空间就派 ...
- 解决vue项目打包之后出现源代码的问题
config/index.js 页面找到productionSourceMap:ture 改为 productionSourceMap:false
- Android 使用android-support-multidex解决Dex超出方法数的限制问题,让你的应用不再爆棚(转)
如有转载,请声明出处: 时之沙: http://blog.csdn.net/t12x3456 (来自时之沙的csdn博客) 随着应用不断迭代,业务线的扩展,应用越来越大(比如集成了各种第三方sd ...
- js 单行间隙滚动
代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...
- vue项目base64转img
最近一个vue项目中,有个需求是, 发送消息是base64时,转换成图片预览发送出去. 输入框: <el-input class="input-box" ref=" ...
- 在SpringCloud中MAVEN配置文件中的更改
<mirrors> <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> ...
- 【Codeforces Round #429 (Div. 2) C】Leha and Function
[Link]:http://codeforces.com/contest/841/problem/C [Description] [Solution] 看到最大的和最小的对应,第二大的和第二小的对应. ...