多态、向上转型、向下转型、instanceof 运算符、

多态

多态是具有表现多种形态能力的特征。更专业的说法: 同一个实现接口,使用不同的实例而执行不同的操作。

多态性与继承、方法重写密切相关

1.继承的存在(继承是多态的基础,没有继承就没有多态)

2.子类重写父类的方法(多态下调用子类重写后的方法)

3.父类引用变量指向子类对象(子类到父类的类型转换)

向上转型

向上转型首先是安全的,但有可能会导致子类方法的丢失,特有的方法会丢失,继承的方法可以调用

1.将一个父类的引用指向一个子类的对象,称为向上转型 ,自动进行类型转换

2.此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法

3.此时通过父类引用变量无法调用子类特有的方法

使用父类作为方法形参实现多态

使用父类作为方法的返回值实现多态

父类到子类的转换(向下转型)

当需要调用子类特有的方法时,可以通过将父类再转换为子类来实现

将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型,此时必须进行强制类型转换

instanceof 运算符

如果没有转换为真实的子类类型,就会出现类型转换异常。

对象  instanceof 类或接口

该运算符用来判断一个对象是否属于一个类或者实现了一个接口,结果为 true 或 false 。 在强制类型转换之前通过  instanceof  运算符检查对象的真实类型,再进行相应的强制类型转换,这样就可以避免类型转换异常,从而提高代码的健壮性。

向下转型是不安全的  要用 instanceof  来进行判断可以调用子类的特有方法,  向下转型就是先判断后强转

时间: 2024-10-13 11:35:52

多态、向上转型、向下转型、instanceof 运算符、的相关文章

多态 向上,向下转型

注意:自始自终都是子类对象在做着类型的变化向上转型:作用:限制对子类特有方法的访问父类引用   指向 子类对象   //向上转型 ,但是不能访问子类特有的方法       Animal    父类                 cat()子类继承与Animal  Animal  a  =  new  cat();----------------------------------------------向下转型:作用:为了访问子类中的特有方法子类引用   指向 父类(引用)  对象cat s 

“全栈2019”Java第九十章:内部类可以向上或向下转型吗?

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第九十章:内部类可以向上或向下转型吗? 下一章 "全栈2019"Java第九十一章:内部类具有多态特性吗? 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学

java上转型和下转型(对象的多态性)

/*上转型和下转型(对象的多态性) *上转型:是子类对象由父类引用,格式:parent p=new son *也就是说,想要上转型的前提必须是有继承关系的两个类. *在调用方法的时候,上转型对象只能调用父类中有的方法,如果调用子类的方法则会报错 *下转型:是父类向下强制转换到子类对象 *前提是该父类对象必须是经过上转型的对象. * *代码示例:*/ 1 abstract class Parent{ 2 abstract void grow(); 3 } 4 class Son extends P

多态向上转型向下转型

public static void main(String[] args) { Artist artist; artist = new ViolinArtist();//(向上转型)ViolinArtist为子类,父类引用子类对象 损失自己特有的属性和方法 artist.make();//调用的子类的方法 //artist.play(); 会报错, ViolinArtist va = new ViolinArtist(); if(artist instanceof ViolinArtist){

向上与向下转型

向下转型 在向下转型过程中,分为两种情况: 如果父类引用的对象如果引用的是指向的子类对象,那么在向下转型的过程中是安全的.也就是编译是不会出错误的. 如果父类引用的对象是父类本身,那么在向下转型的过程中是不安全的,编译不会出错,但是运行时会出现java.lang.ClassCastException错误.它可以instanceof来避免出错此类错误. 1 Father fh=new Father(); 2 if(fh instanceof Son) 3 { 4 Son son =(Son)fh;

对象的上转型和下转型 (instanceof关键字)

1.对象的上转型,就是多态的一种写法 格式:父类名称 对象名 = new 子类名称(): Animal animal = new Cat(); 含义:右侧创建一个子类对象,把它当作父类来使用 向上转型一定是安全的,从小范围到大范围: 猫是动物,动物不一定是猫 类似于:double num = 100 ps:对象一旦向上转型为父类,就无法调用子类特定内容 2.对象的下转型,其实就是还原的操作 格式:子类名称 对象名 = (子类名称)父类对象: 含义:将父类对象还原为本来的子类对象 Cat cat

java 向上,向下转型

在对Java学习的过程中,对于转型这种操作比较迷茫,特总结出了此文.例子参考了<Java编程思想>. 目录 几个同义词 向上转型与向下转型 例一:向上转型,调用指定的父类方法 例二:向上转型,动态绑定 例三:向上转型,静态绑定 例四:向下转型 转型的误区 1.运行信息(RTTI) 2.数组类型 3.Java容器 几个同义词 首先是几组同义词.它们出现在不同的书籍上,这是造成理解混淆的原因之一. 父类/超类/基类 子类/导出类/继承类/派生类 静态绑定/前期绑定 动态绑定/后期绑定/运行时绑定

Java基础第9天+final关键字、多态(上转型,下转型)、抽象类(特点,成员特点)、接口(特点,成员特点)

1:final关键字(掌握) (1)是最终的意思,可以修饰类,方法,变量. (2)特点: A:它修饰的类,不能被继承. B:它修饰的方法,不能被重写. C:它修饰的变量,是一个常量. (3)面试相关: A:局部变量 a:基本类型 值不能发生改变 b:引用类型 地址值不能发生改变,但是对象的内容是可以改变的 B:初始化时机 a:只能初始化一次. b:常见的给值 定义的时候.(推荐) 构造方法中. 2:多态(掌握) (1)同一个对象在不同时刻体现出来的不同状态. (2)多态的前提: A:有继承或者实

对象向上、向下转型

向上转型(Son-->Father),程序会自动完成 父类 父类对象 = 子类实例 向下转型(Father-->Son),强制类型转换 子类 子类对象 = (子类)父类实例 class Father { public void tell() { System.out.println("Father tell"); } } class Son extends Father { public void tell() { System.out.println("Son

11 向上与向下转型

什么是向上转型:将子类的对象赋值给父类的引用 Student s=new Student(); Person p=s; 什么是向下转型:将父类的对象赋值给子类的引用 Student s1=new Student(); Person p=s1; Student s2=(Student)p;