java向上转型

介绍

代码

父类

复制代码
package b;

public class father_ {//father class
	String name="动物";
	int age=10;
	public void sleep() {
		System.out.println("睡");
		
	}
		
	public void run() {
		System.out.println("跑");
		
	}
	public void eat() {
		System.out.println("吃");
		
	}
	public void show() {
		System.out.println("你好");
		
	}
}

子类

复制代码
package b;

public class graduate extends father_ {
		public void eat() {
			System.out.println("猫吃鱼");
			
		}
		public void catchmouse() {
			System.out.println("猫抓老鼠");
			
		}
	}

主类

复制代码
package b;

public class main_ {

	public static void main(String[] args) {
		//向上转型,父类的引用转向了子类的
		father_ animal=new graduate();
		Object obj=new graduate();
		System.out.println(animal.catch);
		System.out.println(obj.name);
		
	}
	
}

向上转型就是我们前面讲的编译类是主类,运行类是子类,能调用的方法必须是子类和父类都有的,如果子类没有就按照查找原则找父类。并且不能调用子类特有的特有成员。因为对于我们

animal 的编译是father_,根本不知道catch是哪个

在编译阶段能够调用哪些成员是由编译类型决定的,你无法找到运行对象时的方法,

javac是看编译类型,即父类的。java看运行类型,即子类的。所以就有了运行时候的查找规则

相关推荐
等故意几秒前
C# 工业视觉上位机开发心得分享
开发语言·数码相机·c#·视觉检测
广师大-Wzx1 分钟前
JavaWeb:后端部分
java·开发语言·spring·servlet·tomcat·maven·mybatis
机器学习之心2 分钟前
基于CPO-VMD冠豪猪优化优化变分模态分解与最小包络熵的自适应变分模态分解方法,附MATLAB代码
开发语言·matlab·cpo-vmd·冠豪猪优化优化变分模态分解
lly2024064 分钟前
Font Awesome 文件类型图标
开发语言
QH_ShareHub9 分钟前
从 R 到 Python:数据科学生态的“双语”对照手册
开发语言·python·r语言
dishugj9 分钟前
HANA数据库常用命令总结
java·前端·数据库
MacroZheng11 分钟前
横空出世!IDEA最强MyBatis插件来了,功能很全!
java·后端·mybatis
zhangjw3415 分钟前
第9篇:Java集合框架入门,List详解:ArrayList与LinkedList底层彻底吃透
java·开发语言·list
大大杰哥16 分钟前
Java集合框架(List/Set/Queue)核心总结与代码示例
java·数据结构
报错小能手17 分钟前
Swift经典面试题汇总
开发语言·ios·swift