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

相关推荐
NiceCloud喜云13 分钟前
Anthropic 一周三连发:Cowork 多端、Fable 5 按需付费、J-space 论文的技术解读
java·服务器·网络·人工智能·ai
cui_ruicheng19 分钟前
Python从入门到实战(六):非序列容器
开发语言·python
SamDeepThinking21 分钟前
组合还是继承?我在项目里主要看这两个判断
java·后端·面试
西西学代码27 分钟前
Flutter---底部导航栏(2)
开发语言·javascript·flutter
legendary_16328 分钟前
SINK芯片:Type-C统一供电时代的小家电核心方案
c语言·开发语言·人工智能·智能手机
momo30 分钟前
JAVA基础知识
java·开发语言
凯瑟琳.奥古斯特1 小时前
力扣1013三等分解法与C++实现
开发语言·c++·算法·leetcode·职场和发展
就叫_这个吧1 小时前
Activiti7工作流入门+案例应用
java·activiti7·工作流
Z_W_H_1 小时前
minikube start --driver=docker --memory=4000mb出现PROVIDER_DOCKER_NEWGRP
java·docker·minikube
折哥的程序人生 · 物流技术专研1 小时前
第3篇:手写促销策略引擎(满减、打折、立减)
java·设计模式·策略模式·开闭原则·编程实战·扩充系列·促销引擎