public class TestCar {
public static void main(String[] args) {
Car car = new Car(40);
Bus bus = new Bus(20,10);
System.out.println("Car速度: " + car.v);
System.out.println("Bus速度: " + bus.v);
//将子类bus的引用赋给父类的对象
//此时子类中那些不是从父类继承而来的成员将不再可见
Car car1 = bus ;
System.out.println("Car1速度: " + car1.v);
//我们可以通过强制类型转换将这个父类再转换成子类类
//此时那些不见了的成员又变得可见了。
Bus bus2 = (Bus)car1;
System.out.println("Car1速度: " + bus2.p);
//由此可见,将子类引用赋给父类对象时,java虚拟主机并没有将那些非继承成员丢弃
}
}
class Car{
int v;
public Car(int v){
this.v = v;
}
}
class Bus extends Car{
int p;
public Bus(int v , int p){
super(v);
this.p = p;
}
}
分享到:
相关推荐
当我们创建一个子类对象并将其赋值给父类引用时,这种行为被称为向上转型(Upcasting)。这一过程是自动且安全的,因为子类对象包含了父类的所有属性和方法。下面我们将深入探讨这个主题,包括它的原理、示例代码...
当需要将父类的对象赋值给子类的对象时,通常的目标是保留父类的所有属性值,并可能在子类中初始化额外的属性。有几种方法可以实现这一点: 1. **构造函数参数**: 子类的构造函数可以接受一个父类对象作为参数,...
在面向对象编程语言中,子类继承自父类时会自动拥有父类的所有非私有成员(包括属性和方法)。这意味着子类可以被视为是父类的一种特殊形式,即“子类是一种特殊的父类”。因此,可以通过父类的引用变量来操作子类...
- **数据成员的重写**:当子类定义了一个与父类同名的数据成员时,子类成员将隐藏父类成员,即在子类中默认情况下无法直接访问父类成员。 - **方法的重写**:当子类中定义了一个与父类同名且具有相同参数列表的方法...
在Java编程语言中,"在父类获取子类属性"是一个常见的需求,特别是在设计模式、继承和多态性等核心概念的应用中。这个主题涉及到面向对象编程的基本原理,特别是子类继承父类后如何访问和操作子类特有的属性。下面...
在 Java 中,使用 `extends` 关键字可以实现继承关系,子类可以继承父类的属性和方法,并可以重写父类的方法。使用 `super` 关键字可以引用父类的成分,访问父类中定义的属性和方法。 在 Java 中,可以使用多态性来...
最近对将子类对象赋值给父类对象有点心得,想和大家分享一下.但本人水平有限,请各位指正和批评. 言归正传,下面是几个小例子,请大家看一看. 测试一 父类: public class Supclass { public void print() { ...
有关子类和父类。A是子类,Teacher是父类。A是Teacher 的一种(子类)会继承父类李非私
本文将深入探讨Java中的多态性,特别是“父类引用子类对象”的概念,以及这一特性如何在实际编码中体现。 ### 多态性概述 多态性主要通过方法的重写(Overriding)、重载(Overloading)和动态绑定(Dynamic Binding)来...
在Java中,反射主要用于在运行时分析类和对象,包括访问私有成员、调用私有方法、创建动态代理等。在标题和描述中提到的知识点主要集中在如何通过反射获取类的所有属性和get方法,包括来自子类和父类的。下面将详细...
在 Java 中,多态只看父类引用的方法,而不看子类对象的方法。这意味着,如果父类有一个方法 `void eat() { ... }`,子类可以定义一个同名的方法 `void eat() { ... }`,但这只是子类的方法,而不是重写父类的方法。...
如果子类没有定义自己的构造函数(即没有定义`__init__`方法),那么在实例化子类时,Python会自动调用父类的构造函数来初始化对象。例如: ```python class Son(Father): def getName(self): return 'Son' + ...
在Java中,继承是面向对象编程的核心特征之一,它允许我们创建一个新类(子类)基于一个已经存在的类(父类或超类)的结构。这样可以复用现有类的代码,并可添加或覆盖特性来形成新的类。本文将通过具体的代码范例,...
在Java编程语言中,继承是面向对象编程的一个关键特性,它允许一个类(子类)继承另一个类(父类)的属性和方法。这有助于实现代码重用,并且可以创建层次结构的类系统,使代码更加模块化。下面我们将深入探讨Java中...
在Java中,如果子类没有显式调用父类的构造器,编译器会自动添加一个默认的`super()`调用,这将调用父类的无参构造器。如果父类有带参数的构造器,子类必须显式调用。 2. **初始化子类**: - 父类的构造器执行完毕...
3. 子类继承了父类的所有非私有成员变量和方法,但不包括构造函数。子类可以在自己的构造方法中使用`super(参数列表)`来调用父类的构造函数。 4. 如果子类的构造方法没有显式调用父类构造函数,且未使用`this`调用...