上溯造型、下溯造型的理解
(上溯造型定义:java允许把一个子类对象直接复制给一个父类引用变量,自动完成类型转换,这种语法现象称为上溯造型。
下溯造型回到它自己所在的类(强制转换):一个对象被溯型为父类或接口后还可以再被下溯造型,回到它自己所在的类。注意,只有曾经上溯造型过的对象才能进行下溯造型,对象不允许不经过上溯造型我直接下溯造型,否则运行时会抛出
上溯造型的优点是用户可以把不同类型的子类上溯为同一个父类造型,以方便地统一处理它们;缺点是损失掉了子类新扩展增加的属性和方法(覆盖父类的方法不会损失掉),除非再进行下溯造型,否则这部分属性和方法不能被访问)以上文字引用博客
以下以“黄”sir勾勾为例
//step1:新建一个animal类
class animal{void shout() {System.out.println("wangwangwang");//建一个动物叫的方法}/*下面建一个static方法,过程是以animal对象为参数,实现该方法。我认为这里这样写的作用是使得在已经建立子类的对象(比如下面的dog) 后不用再新建animal类即可直接通过animal.test()调用shout方法,因为shout方法不是静态方法不能直接通过名字调用而是需要实例animal。*/static void test(animal i) {i.shout();}
}
class dog extends animal{void sleep() {System.out.println("zzz");}
}
class Test{public static void main(String[] args) {animal huang=new dog();//把dog huang上溯造型,也就是把huang变成animal对象animal.test(huang);//huang.sleep();这时候不能运行,因为上溯造型后huang损失了新建的sleep方法,只有父类方法 dog huan=(dog)huang;//下溯造型,耶嘿,也就是把huang变回dog类对象huan.sleep();//好了,这时候可以zzz了。}
}
上溯造型、下溯造型的理解相关推荐
- Java——上溯造型下溯造型
public abstract class Animal {public abstract void speak();public void eat(){// 吃吃吃!!! } } public in ...
- java 下溯造型_Java——上溯造型下溯造型
public abstract class Animal { public abstract void speak(); public void eat(){ // 吃吃吃!!! } } public ...
- Java的上溯、下溯
2019独角兽企业重金招聘Python工程师标准>>> 抽象方法:只有方法声明没有实现,有一个抽象方法的的类叫抽象类 修饰符: 例: abstract class Operator{ ...
- java上溯造型与下溯造型
Java的多态性 面向对象编程有三个特征,即封装.继承和多态. 封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据. 继承是为了重用父类代码,同时为实现多态性作 ...
- 学习上溯造型和下溯造型 【转载一篇】
题按:做了几年的java程序,却很难说对基本的OO概念都有理解.即便每天都写的代码中,也很难说清楚其中到底运用了怎样的概念和思想.前日的考试中看到关于上溯造型与下溯造型的问题,就查了些资料,集中说一下 ...
- [Java初学]Java上溯造型(upcasting)与下溯造型(Downcasting)
Java上溯造型(upcasting)与下溯造型(Downcasting) 上溯造型(upcasting) 这个术语缘于继承关系图的传统画法:将基类至于顶部,而向下发展的就是派生类. 文章使用的完整代 ...
- Java 的上溯造型和下溯造型以及举例,以及判断参数等指向的类
(一) 先给出个例子,代码如下: /** * @author WangQun * 动物抽象类 */ abstract class Animal { public abstract void speak ...
- java 下溯造型_Java 的上溯造型和下溯造型以及举例,以及判断参数等指向的类
(一) 先给出个例子,代码如下: /** * @author WangQun * 动物抽象类 */ abstract class Animal { public abstract void speak ...
- 上溯造型和下溯造性(解耦合)
上溯造型: 向上转型(Upcasting)- 子类转换为父类,自动转换: 前提 - 具有继承或实现关系: 向上转换损失了子类新扩展的属性和方法,仅可以使用从父类中继承的属性和方法 Animal a=n ...
最新文章
- mysql数据库移植到另一台电脑,将mysql数据库从一台计算机复制到另一台计算机...
- leetcode Longest Palindromic Substring
- Emacs高亮设置:Hi-Lock mode笔记
- ElementUI:文本框实现远程搜索的用法
- jeecg之弹窗插件lhgdialog小结
- 狗换了新主人会想旧主人吗?
- 关于layui中lay-verify=required无效的解决办法
- python 对文件夹的相关操作
- windows内核开发笔记十一:IRQL级别调用说明
- 阿里云服务器DDoS基础防护设置及常见问题
- 表设计原则_表格设计原则
- Windows 10微软拼音中添加自定义短语
- 多个文本对比相似度分析
- python写打飞机游戏
- Quixel bridge无法导入到blender
- android 广播的插件化
- 地铁在终点站是怎么掉头的?南京地铁怎么过的长江?
- 递归最小二乘(RLS)算法详解
- 最优化方法四:线性规划与非线性规划
- 数据结构知识点概要(北大张铭版)