首页 > 编程语言 >关于Java中对象的向上转型和向下转型

关于Java中对象的向上转型和向下转型

时间:2023-04-20 17:58:42浏览次数:36  
标签:System Java Pet 转型 eat 向下 Cat public out

什么是多态?

同一个类调用同一个方法会产生不同的影响/结果 这就是多态

public class Pet{
	public void eat(){
		System.out.println("Pet eat...")
	}
}
class Dog extends Pet{
	public void eat(){
		System.out.pringln("Dog eat...")
	}
	public void run(){
		System.out.pringln("Dog run...子类特有的方法")
	}
}
class Cat extends Pet{
	public void eat(){
		System.out.println("Cat eat...")
	}
	public void swim(){
		System.out.println("Cat swim...子类特有的方法")
	}
}

为什么向上转型?

限制对子类特有方法的访问

Pet p=new Dog()//向上转型是子类转父类 自动提升不需要强转
p.eat()
p.run() //报错 只能访问到父类有的方法

为什么向下转型?

使用子类特有的方法

Pet p=new Cat()
p=(Cat)p //向下转型是父类转子类 需要强制转换但只能转到运行期类型(这里是Cat)

标签:System,Java,Pet,转型,eat,向下,Cat,public,out
From: https://www.cnblogs.com/odfive/p/17337710.html

相关文章

  • day 07 7.1 前端基础之JavaScript基础【一】
    前端基础之JavaScript基础【一】【1】、JavaScript的历史1992年底,美国国家超级电脑应用中心(NCSA)开始开发一个独立的浏览器,叫做Mosaic。这是人类历史上第一个浏览器,从此网页可以在图形界面的窗口浏览。但是该浏览器还没有面向大众的普通用户。1994年10月,NCSA的一个主要......
  • day 08 8.2 前端基础之JavaScript基础【三】
    前端基础之JavaScript基础【三】【1】、jQuery介绍jQuery是什么jQuery是一个快速、简洁的JavaScript框架。jQuery设计的宗旨是“writeLess,DoMore”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件......
  • day 08 8.1 前端基础之JavaScript基础【二】
    前端基础之JavaScript基础【二】【1】、json序列化和反序列化JSON:JavaScript对象表示法,是一种轻量级的数据交换格式。易于人阅读和编写。//json是一种数据格式,语法一般是{}或者[]包含起来//内部成员以英文逗号隔开,最后一个成员不能使用逗号!//可以是键值对,也可以是列......
  • 每日八股文之Java
    1、如何利用Redis实现一个分布式锁?为什么要实现分布式锁、实现分布式锁的方式理论+实操:158、缓存-分布式锁-分布式锁原理与使用哔哩哔哩bilibili实现分布式锁的方式:方案一:SETNX+EXPIRE方案二:SETNX+value值是(系统时间+过期时间)方案三:使用Lua脚本(包含SETNX+EXPIRE......
  • 关于Java中方法重载和方法重写
    方法重写是子类继承父类(默认继承Object类)后覆盖父类的方法需要保证同名同参同返回值且访问权限范围不能缩小(public>protected>default>private)publicclassFather{ publicintmethod(){ return-1; }}classSonextendsFather{ //访问范围不能小返回值方法......
  • java-普通内部类和静态内部类区别
    静态内部类相对与外部类是独立存在的,在静态内部类中无法直接访问外部类中的变量、方法。如果要访问的话,必须要new一个外部类的对象,使用new出来的对象来访问。但是可以直接访问静态变量,调用静态的方法。普通内部类作为外部类一个成员而存在,在普通内部类中可以直接访问外部类属性......
  • java创建对象的几种方法
    Java一共有5种方法可以来创建对象例如对象User;使用new的方式来创建对象,newUser(),这种方法使用了构造器2.使用class的newInstance()例如:Useruser=User.class.newInstance();这种方法也使用了构造器3.使用Constructor类的newInstance()方法创建对象,例如:Useruser=......
  • Java多态
    Java多态封装、继承和多态是面向对象的三大特征多态polymorphism许多形态多态体现为父类引用变量可以指向子类对象。多态的定义与使用格式​定义格式:父类类型变量名=new子类类型();多态是同一个行为具有多个不同表现形式或形态的能力实现多态的条件1.继承:必......
  • java ThreadPool 线程池
    线程池的参数corePoolSize为核心线程;maximunPoolSize为最大线程;keepAliveTime为最长生命时间;unit是其时间单位;workQueue任务队列;handler是过多线程之后的策略对于线程池的处理线程机制,网上有一堆,但是机制核心是优先处理核心线程,优先堆满线程池,初学者建议不用轻易使用拒绝策略,除非......
  • java的synchronized
    不久前用到了同步,现在回过头来对JAVA中的同步做个总结,以对前段时间工作的总结和自我技术的条理话。JAVA中synchronized关键字能够作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块。假如再细的分类,synchronized可作用于instance变量、objectreference(对象......