Java上转型对象易混淆_Java笔记 上转型对象

Java笔记 上转型对象

Java笔记 上转型对象

f3d94144d8d2ec5fe183aa2f1e75abf2.png

创建对象可以Fruit fruit = new GoldenDelicious();

这样只能自父类向子类创建

如果Macintosh p = new Apple(),这是不合法的

一个M的类型,开Apple的空间,是不够的,M的成员可能比Apple多

例子

A ------> B --------> C

class A

{

}

class B extends A

{

public void show(){

System.out.println("sb");

}

}

class C extends B

{

}

public class test

{

public static void main(String args[])

{

A a = new C();

a.show(); // 错误

System.out.println(a instanceof B); // true

}

}

这里我们用父类a指向子类c

这个对象a是B的子类,但是不能调用B的函数

这个对象不能调用子类新增的成员变量,不能调用新增的方法

class A

{

public void show()

{

System.out.println("A");

}

}

class B extends A

{

int x = 5;

public void show()

{

System.out.println("B被继承的方法");

}

public void express()

{

System.out.println("another B");

}

}

class C extends B

{

int x = 3;

public void express()

{

System.out.println("C的重写方法");

}

}

public class test

{

public static void main(String args[])

{

B b = new C();

System.out.println(b.x); // B的5 而非C的3

b.show(); // B被继承的方法

b.express(); // C的重写方法

}

}

class A

{

public void show(){

System.out.println("A");

}

}

class B extends A

{

public void show(){

System.out.println("B");

}

}

class C extends B

{

}

public class test

{

public static void main(String args[])

{

A a = new C();

a.show(); // B

}

}

这个例子中

A创建了C,show()方法被继承

对于C来说B才是父类,所以继承方法输出B

如果删掉A中的方法,a.show();会报错

如果在c中改写这个方法

class C extends B

{

public void show(){

System.out.println("C");

}

}

最后输出C

如果只在A中写这个方法,最后输出A

Java笔记 上转型对象相关教程

Erika Enterprise RTOS学习笔记之环境创建

Erika Enterprise RTOS学习笔记之环境创建 一目了然 1 Erika Enterprise RTOS简介 1.1 主要特性 1.2 Erika Enterprise下载 2 开发环境 2.1 开发环境配置及使用 2.2 开发环境简介 2.3 工程文件介绍 2.4 Erika Enterprise文档资料下载 1 Erika Enterprise RTOS

问题解决:java.lang.NoSuchMethodError: org.springframework.a

问题解决:java.lang.NoSuchMethodError: org.springframework.aop.support.AopUtils.isCglibProxyClass 文章目录 问题场景 问题环境 问题原因 解决方案 一、降低spring版本 二、升级CXF版本 三、项目新建AopUtils类,覆盖写入方法 结果 总结 随缘求赞 问题场

java-idea普通打包(不使用插件)

java-idea普通打包(不使用插件) 在项目上右键选择 Open Module Settings - Artifacts - 加号 - JAR - From modules with - 把/main/java删掉,点击OK,点击Apply,点击OK Build - Build Artifacts Jar包路径:

JavaWeb(八)---书城项目第六阶段-登陆和注册的细节处理

JavaWeb(八)---书城项目第六阶段-登陆和注册的细节处理 1、登陆—显示用户名 UserServlet 程序中保存用户登录的信息 修改 login_succuess_menu.jsp 还要修改首页 index.jsp 页面的菜单 : 2、登出—注销用户 1、销毁 Session 中用户登录的信息(或者销毁 Sess

Java:基本数据类型总结

Java:基本数据类型总结 //注:不能以0作为十进制的开头(0除外) 八进制必须以0开头 十六进制必须以0X或0x开头//基本数据类型:数值型((整数类型:byte、short、int、long)浮点数类型(float、double)) 字符型(char) 布尔型(bool)//面向对象的特征:

Java面向对象(封装,继承,多态)

Java面向对象(封装,继承,多态) 面向对象 面向对象 概念 1、封装 含义及优点 封装的分类和实现 2、继承 继承的主要形式 关键的词汇 extends implements super 与 this final static 3、多态 含义 形式 解释 上转型 下转型 面向对象 面向对象简称 OO(Object

Java:变量和常量

Java:变量和常量 //标识符有任意顺序的字母、下划线、美元符号、数字组成,并且第一个字符不能是数字,标识符不能是Java中的关键字//当定义的final变量属于“成员变量(全局变量)时”,必须在定义的时候就设置它的初始值//再类体中所定义的变量称为成员变量

Java集合篇-知识整理

Java集合篇-知识整理 目录 集合概述 集合框架 1. Collection接口 2. List接口 2.1 ArrayList 2.2Vector 2.2.1 Vector 类和 ArrayList 类的区别 2.3LinkedList 2.3.1LinkedList 类和 ArrayList 类的比较 2.4Stack 3. Set 接口 3.1散列存放:HashSet 3.2LinkedH

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值