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看运行类型,即子类的。所以就有了运行时候的查找规则

相关推荐
vipxieliang14 小时前
Actuator 与 Micrometer:生产级监控体系搭建
java·spring boot
椒颜皮皮虾྅14 小时前
一套 C# 接口,解锁四类视觉任务:DeploySharp 分类、分割、关键点与旋转框实战
开发语言·分类·c#
Seven9714 小时前
Java已死?社招第一次跳槽:Boss沟通505次,6周拿下8个offer
java
2603_9658966215 小时前
JavaScript 原型与原型链
开发语言·前端·javascript
朋友圈自动点赞工具15 小时前
Ruby方法查找:对象不存方法
开发语言·前端·ruby·科技资讯
D e re k ZH15 小时前
C++ 模板与泛型编程进阶(No 2)
开发语言·c++
一级新生15 小时前
LLM _ Agent _ Skill _ 专家 的关系与选型笔记
java·开发语言·人工智能·笔记·大模型·智能体·skill
文丑颜不良啊15 小时前
LeetCode1541~1560题目解析
java·leetcode
starzy199015 小时前
Scala String操作:从插值器到正则的完整指南
开发语言·后端·scala
普通人615 小时前
CSS-box-sizing-使用指南
开发语言·前端·css·1024程序员节