栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

对象类型转换

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

对象类型转换

对象类型转换

文章目录
  • 前言
  • 一、向上转型
  • 二、向下转型
    • 1.instanceof 运算符


前言


提示:以下是本篇文章正文内容,下面案例可供参考

一、向上转型

Person.java文件

在这里插入代码片
package first;

public class Person {
			String name;
			public void talk() {
				//把父类中的覆盖情况去掉,则子类中的方法不再可见;
			}
			public void listen() {
				System.out.println("a person is listening");
			}
}

Student.java文件

package first;

public class Student extends Person{
		String no; //定义学号;
		public void talk() {
			System.out.println("student is talking");
		}
		public void learn() {
			System.out.println("student is learning");
		}
}

Teacher.java文件

package first;

public class Teacher extends Person {
				String workno;//定义工号;
				public void talk() {
					System.out.println("teacher is talking");
				}
				public void teach() {
					System.out.println("teacher is teaching");
				}
}

向上转型是指父类引用子类对象,就是子类对象能转换成父类对象,例如上面的代码
假设父类person类对象p 和子类student 对象 s

Person p;
p=new Student();
//父类Person 对象 p引用子类student 新创建的对象

Student s=new Student();
p=s;
也可以直接写成:
Person p=new Student(); //父类Person 对象 p引用子类student 新创建的对象

当子类对象 s 赋给父类对象p时,是隐式转换。不用进行强制类型转换。父类引用子类对象后只能引用父类中的成员变量和方法,而不能访问子类自己定义的成员变量和成员方法。

二、向下转型

向下转型是指子类引用父类对象,就是将父类对象能转换成子类对象;
必须满足两个条件:

  1. 必须执行强制类型转换
  2. 必须确保父类对象是子类的一个实例,否则抛出异常
Person p=new Student();  //父类引用子类的对象
Student s=(Student)p; //父类对象p赋予子类对象s  当前p是子类student的引用;

向下转型特点:

  • 向下转型对象可以操作父类及子类成员变量和成员方法
  • 向下转型对象访问重写父类的方法时,操作的是子类的方法
  • 向下转型必须进行强制类型转换
  • 向下转型必须保证父类引用的是该子类的对象,如果引用的是子类的其他子类对象,会抛出类型不匹配异常。
1.instanceof 运算符

父类对象能转换成子类对象的条件是父类对象原本就是子类的实例。为了确保向下转型时,父类对象引用的是子类的对象,引入instanceof 运算,该运算符用来判断该引用变量是否属于该类或该类的子类,格式为:
引用变量名 instanceof 类名

package first;

public class UseOfInstanceof {
			public static void main(String[] args) {
				Person p1=new Teacher();
				Person p2=new Student();
				pleasetalk(p1);
				pleasetalk(p2);
				p1.listen();
				p2.listen();
				if(p1 instanceof Teacher) {
					System.out.println("she is a teacher!");
					((Teacher)p1).teach();
					//如果能转换 则让老师演示教学
				}
				if(p2 instanceof Student) {
					System.out.println("he is a Student!");
					((Student)p2).learn();
				}
			}

			static void pleasetalk(Person p) {
				
			}
}
结果:
a person is listening
a person is listening
she is a teacher!
teacher is teaching
he is a Student!
student is learning
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/294896.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号