Java上转型和下转型对象

上转型对象:子类创建对象 并将这个对象引用赋值给父类的对象。

语法格式:Father f=new Son();

注意事项:

  1. 上转型对象是由子类创建的,但上转型对象会失去子类的一些属性和方法。
  2. 上转型对象调用方法时,就是调用子类继承和重写过的方法。而不会是新增的方法,也不是父类原有的方法。
  3. 上转型对象可以操纵父类原有的属性和功能,无论这些方法是否被重写。
  4. 上转型对象可以再强制转换到一个子类对象,强制转换过的对象具有子类所有属性和功能。

代码示例:

public class Shangz{ //父类
	int a=1;
	int b=2;
	void cal(){ //父类自己的方法
		System.out.println(a*b);
	}
	public static void main(String[] args) {
		Shangz s=new ShangzDemo();
		s.cal(); //上转型对象调用子类的方法
		s.err(); //报错,上转型对象失去了子类的属性
	}
}
class ShangzDemo extends Shangz{ //子类继承父类
	void cal(){ //子类重写父类的方法
		System.out.println(a+b);
	}
	void err(){ //子类自己的方法
		System.out.println(a/b);
	}
}

下转型对象:父类引用的对象转换为子类的类型(强制类型转换)。

语法格式:

Father f=new Son();

Son s=(Father)f;

错误语法:(编译不报错,运行报错)

Father f=new Father();

Son s=Son(f);

注意事项:

  1. 向下转型必须先向上转型,否则会发生异常。
  2. 下转型对象可以引用子类和父类的属性和方法。

代码例子:

public class Shangz{ //父类
	int a=1;
	int b=2;
	void cal(){ //父类自己的方法
		System.out.println(a*b);
	}
	public static void main(String[] args) {
		Shangz s=new ShangzDemo();
		ShangzDemo d=(ShangzDemo)s;
		d.cal(); //调用了父类的方法
		d.div(); //对象调用子类的方法

		Shangz serr=new Shangz();
		ShangzDemo derr=(ShangzDemo)serr;
		derr.cal(); //编译不报错,运行出现转换异常
	}
}
class ShangzDemo extends Shangz{ //子类继承父类
	void cal(){ //子类重写父类的方法
		System.out.println(a+b);
	}
	void div(){ //子类自己的方法
		System.out.println(a/b);
	}
}

最后:对象转型在泛型中使用较多。

您可能感兴趣的文章:

  • Java 向上转型和向下转型的详解
(0)

相关推荐

  • Java 向上转型和向下转型的详解

     Java 向上转型和向下转型的详解 转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展. 向上转型:子类引用的对象转换为父类类型称为向上转型.通俗地说就是是将子类对象转为父类对象.此处父类对象可以是接口 向下转型:父类引用的对象转换为子类类型称为向下转型. 前者是一个向上转型,Animal dog 引用指向new Dog();子类对象当成父类对象,只能调用父类的成员,如果子

  • Java上转型和下转型对象

    上转型对象:子类创建对象 并将这个对象引用赋值给父类的对象. 语法格式:Father f=new Son(); 注意事项: 上转型对象是由子类创建的,但上转型对象会失去子类的一些属性和方法. 上转型对象调用方法时,就是调用子类继承和重写过的方法.而不会是新增的方法,也不是父类原有的方法. 上转型对象可以操纵父类原有的属性和功能,无论这些方法是否被重写. 上转型对象可以再强制转换到一个子类对象,强制转换过的对象具有子类所有属性和功能. 代码示例: public class Shangz{ //父类

  • Java向上转型和向下转型实例解析

    这篇文章主要介绍了Java向上转型和向下转型实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 学习向上转型和向下转型怎么用没多难,但是为什么那样用,我搞了很多次没弄明白.没弄明白的原因是平时学习时之看例子,而例子一般都比较简单,没有对象之间的调用,一般就是一个对象调用自己的方法. 首先看下怎么用转型. 要转型,首先要有继承.继承是面向对象语言中一个代码复用的机制,简单说就是子类继承了父类中的非私有属性和可以继承的方法,然后子类可以继续扩展

  • java向上转型与向下转型详解

    本文实例为大家分享了java向上转型与向下转型的具体代码,供大家参考,具体内容如下 基础知识:Java中的继承机制使得一个类可以继承另一个类,继承的类称为子类,被继承的类称为父类.在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类的对象,所以子类可以继承父类中所有的属性和方法,包括private修饰的属性和方法,但是子类只是拥有父类private修饰的属性和方法,却不能直接使用它,也就是无法直接访问到它(子类可以通过调用父类的pu

  • Java 多态中继承的转型详解与用法分析

    目录 一.前言 二.转型 向上转型 向下转型 三.instanceof运算符 instanceof的用处 instanceof的使用格式: 一.前言 前面我们学习了多态的概述和使用,现在我们来学习前面剩下的转型问题. 二.转型

  • Java 转型(向上或向下转型)详解及简单实例

    在Java编程中经常碰到类型转换,对象类型转换主要包括向上转型和向下转型. 向上转型 我们在现实中常常这样说:这个人会唱歌.在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就是说我们更倾向于使用抽象概念"人".再例如,麻雀是鸟类的一种(鸟类的子类),而鸟类则是动物中的一种(动物的子类).我们现实中也经常这样说:麻雀是鸟.这两种说法实际上就是所谓的向上转型,通俗地说就是子类转型成父类.这也符合Java提倡的面向抽象编程思想.来看下面的代码: package a.b; publ

  • Java 向上转型和向下转型的详解

     Java 向上转型和向下转型的详解 转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展. 向上转型:子类引用的对象转换为父类类型称为向上转型.通俗地说就是是将子类对象转为父类对象.此处父类对象可以是接口 向下转型:父类引用的对象转换为子类类型称为向下转型. 前者是一个向上转型,Animal dog 引用指向new Dog();子类对象当成父类对象,只能调用父类的成员,如果子

  • Java向上转型和向下转型的区别说明

    目录 向上转型和向下转型的区别 1.代码实现 2.实现向下转型 3.此时执行程序 简单认识向上转型和向下转型 向上转型:父类引用指向子类对象 向下转型:子类引用指向父类对象 向上转型和向下转型的区别 前言: 向上转型:父类引用类型指向了子类的实例对象,此时无法使用子类里的成员变量以及方法. 向下转型:通过引用类型强转,恢复了子类的成员变量以及方法. 1.代码实现 可以发现,父类虽然指向了子类的实例对象,但是并不能调用子类对象的方法,编译器报错.此时我们可以看作被隐藏了,那么怎样才可以把被隐藏的方

  • 浅谈Java向下转型的意义

    一开始学习 Java 时不重视向下转型.一直搞不清楚向下转型的意义和用途,不清楚其实就是不会,那开发的过程肯定也想不到用向下转型. 其实向上转型和向下转型都是很重要的,可能我们平时见向上转型多一点,向上转型也比较好理解. 但是向下转型,会不会觉得很傻,我是要用子类实例对象,先是生成子类实例赋值给父类引用,在将父类引用向下强转给子类 引用,这不是多此一举吗?我不向上转型也不向下转型,直接用子类实例就行了. 我开始学习Java时也是这么想的,这误区导致我觉得向下转型就是没用的. 随着技术的提升,我在

  • java向下转型基础知识点及实例

    1.概念 向下转型就是父类对象转成子类对象.我们把一个父类引用 Animal类型的引用 给了一个 Bird类型 的引用,这就是向下转型 2.格式 子类 子类对象=(子类)父类实例 3.注意 向下转型的时候一定要进行强制类型转换 4.实例 class Animal { public String name; public void eat() { System.out.println(this.name + " 正在吃"); } } class Cat extends Animal {

随机推荐