关于java的上转型对象

1. 定义

如果B类是A类的子类或间接子类,当用B类创建对象b并将这个对象b的引用赋给A类对象a时,如:

A a;
a = new B();
OR
A a;
B b = new B();
a = b;

则称A类对象a是子类B对象b的上转型对象。

2. 性质

对象b的上转型a的实体是有子类B创建的,但是上转型对象会失去子类B的一些属性和功能。上转型对象具有以下特点:

    1. 上转型对象不能操作子类新增加的成员变量,不能使用子类新增的方法。即为较子类B失去一些属性和功能,这些属性和功能是新增的。
    2. 上转型对象可以操作子类继承或隐藏的成员变量,也可以使用子类继承的或重写的方法。即为上转型对象可以操纵父类原有的属性和功能,无论这些方法是否被重写。
    3. 上转型对象调用方法时,就是调用子类继承和重写过的方法。
    4. 可以将对象的上转型对象再强制转换到一个子类对象,强制转换过的对象具有子类所有属性和功能。
    5. 只发生在继承当中。
时间: 2024-09-30 15:21:10

关于java的上转型对象的相关文章

Java中对象的上转型对象

1. 定义 如果B类是A类的子类或间接子类,当用B类创建对象b并将这个对象b的引用赋给A类对象a时,如: A a;a = new B();ORA a;B b = new B();a = b; 则称A类对象a是子类B对象b的上转型对象. 2. 性质 对象b的上转型a的实体是有子类B创建的,但是上转型对象会失去子类B的一些属性和功能.上转型对象具有以下特点: 上转型对象不能操作子类新增加的成员变量,不能使用子类新增的方法.即为较子类B失去一些属性和功能,这些属性和功能是新增的. 上转型对象可以操作子

java 对象的上转型对象(父类)

Example5_10.java class 类人猿 { void crySpeak(String s) { System.out.println(s); } } class People extends 类人猿 { void computer(int a,int b) { int c=a*b; System.out.println(c); } void crySpeak(String s) { System.out.println("***"+s+"***");

继承与接口,abstract,interface,final,上转型对象

如果你要创建一个水果类,可以先定义什么是水果 /** *用abstract关键字来定义水果,里面所有用abstract修饰的方法都是定义水果的,不需要写方法体,由非抽象的子类来实现且必须实现该方法 */ public abstract class Fruits{ String color = "黄色"; public abstract void juice(); public void color(){ System.out.println(""+color); }

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

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

java线程 在其他对象上同步、线程本地存储ThreadLocal:thinking in java4 21.3.6

package org.rui.thread.concurrency; /** * 在其他对象上同步 * synchronized 块必须给定一个在其上进行同步的对象,并且最合理的方式是,使用其方法正在被调用的当前对象 * :synchronized(this), 在 这种方式中,如果获得了synchronized块上的锁, * 那么该对象其他的synchronized方法和临界区就不能被调用了. * 因此,如果在this上同步,临界区的效果就会直接缩小在同步的范围内. * * 有时必须在另一个

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

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

[Think In Java]基础拾遗1 - 对象初始化、垃圾回收器、继承、组合、代理、接口、抽象类

目录 第一章 对象导论第二章 一切都是对象第三章 操作符第四章 控制执行流程第五章 初始化与清理第六章 访问权限控制第七章 复用类第九章 接口 第一章 对象导论 1. 对象的数据位于何处? 有两种方式在内存中存放对象: (1)为了追求最大的执行速度,对象的存储空间和生命周期可以在编写程序时确定,这可以通过将对象置于堆栈或者静态存储区域内来实现.这种方式牺牲了灵活性. (2)在被称为堆的内存池中动态地创建对象.在这种方式,知道运行时才知道对象需要多少对象,它们的生命周期如何,以及它们的具体类型.

java中Comparable实现对象的比较

/* class A implements Comaprable<A>{ } 那么 A x = new A(); 类关系图 Object o = A; Object Comparable c = A; | Comparable A 实现了 Comparable 接口嘛 |-----|-----A 所以有 o instanceof A == true; o instanceof Comparable == true; 例如ArrayList添加对象实例时,对象实例添加之后先向上转型为Object

JAVA类型信息——Class对象(转载)

JAVA类型信息--Class对象 一.RTTI概要 1.类型信息RTTI :即对象和类的信息,例如类的名字.继承的基类.实现的接口等. 2.类型信息的作用:程序员可以在程序运行时发现和使用类型信息. 3.RTTI真正含义:运行时,识别一个对象的类型. 4.如何在程序运行时识别对象和类的信息? 1)传统RTTI:即在编译时已知道了所有的类型. 2)反射机制:在程序运行时发现和使用类的信息. 5.RTTI的使用 import java.util.*;      //List支持泛型 //impor