以父类的变量访问子类对象的成员
以父类声明变量,并将它指向用子类新建的对象。
此时使用此变量可调用 子类中覆盖父类中的成员函数,或子类中没有而父类中有的成员函数
用法:
利用父类的数组变量来访问子类对象的成员
(1)先创建父类的数组变量;
(2)创建子类对象并放入数组,利用数组元素来访问子类的内容。
例
package com;
public class JavaTest {
public static void main(String ar[])
{
TFather tc = new TChild();
tc.show();
System.out.println(tc.num);
System.out.println(tc.getClass());
tc.showF();
//tc.showC();
}
}
class TFather{
protected int num = 3;
public TFather(){
}
public void show(){
System.out.println("父类show");
}
public void showF(){
System.out.println("子类没有");
}
}
class TChild extends TFather{
protected int num = 4;
public TChild(){
}
public void show(){
System.out.println("子类show");
}
public void showC(){
System.out.println("子类没有");
}
}
结果:
子类show
3
class com.TChild
子类没有
执行tc.showC()时会报错,
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method showC() is undefined for the type TFather
at com.JavaTest.main(JavaTest.java:10)
分享到:
相关推荐
如果在某些情况下,开发者不希望子类覆盖或重写父类的方法或成员变量,可以利用`super`关键字来显式地访问父类中的成员。例如,可以在子类中通过`super.变量名`或`super.方法()`的方式访问父类的成员。 #### 二、...
文章首先解释了多态的定义和前提条件,包括继承或实现关系、父类引用指向子类对象以及方法重写。接着通过具体的代码示例展示了多态的实现方式,如`Person`类及其子类`Student`、`Teacher`、`administrator`的创建和...
在内存中,子类对象包含父类的所有非静态成员,以及子类自己的成员。这意味着子类对象的大小至少等于父类对象的大小加上子类新增成员的大小。 **子类对象的成员初始化** 子类对象在初始化时,不仅会初始化子类的...
- **子类类型变量访问:** 子类类型引用可以访问到子类的所有实例变量,包括隐藏的父类变量和子类特有的变量。 3. **内存分配:** - **父类部分:** 当创建一个子类对象时,内存会为父类部分和子类部分都分配空间...
- 不能使用子类的特有成员:由于父类引用只能调用父类中的成员(包括被重写的方法),无法直接访问子类特有的成员变量或方法,需要通过强制类型转换解决。 1.4 多态中的转型 - 向上转型(Upcasting):父类引用...
3. 在子类中通过`base`关键字访问和调用父类的非静态成员(方法和属性)。 理解这些概念对于编写清晰、高效的C#代码至关重要,尤其是在处理继承关系和构建复杂的类层次结构时。通过实例和实践,开发者可以更好地...
如果父类的成员变量是 int 类型,子类同名变量是 String 类型,同名的父类变量也会被覆盖。如果想访问父类的同名变量,可以使用 super 关键字或者父类类名。 重写父类的方法 子类除了增加新的成员变量和方法外,还...
在编程世界中,继承是...最后,当通过子类对象调用方法时,优先执行子类覆盖的方法。理解这一顺序对于编写可维护和可扩展的代码至关重要。在实际编程中,合理利用继承和多态性,可以大大提高代码的灵活性和可复用性。
1. **成员变量覆盖:** 在子类中声明与父类同名的成员变量称为覆盖,但这种覆盖不会影响到父类的成员变量。 2. **静态绑定:** 成员变量的绑定是在编译时期确定的,因此成员变量总是按照其在类中的声明进行访问。 3....
在易语言中,绑定类成员意味着将类的某个成员变量或成员函数与特定的对象关联起来。这样,在程序运行时,可以直接通过对象调用这些成员,而无需知道具体的实现细节。 1. 成员变量绑定:成员变量是类中存储数据的...
`super` 可用于访问父类中定义的属性、调用父类中定义的成员方法、在子类构造方法中调用父类的构造方法。`super` 的追溯不仅于直接父类,就是 father 的 father。。。。 多态是 Java 中的一种机制,可以实现方法的...
在 Java 中,我们需要注意多态中的成员变量访问原则,即编译时检查父类中是否有该成员变量的定义,如果有,则编译成功,如果没有,则编译失败。在运行时,实际调用成员变量时,仍然是使用等号左边类型中的成员变量。...
这意味着,我们不能直接访问子类中的成员,而只能通过父类的引用来间接访问子类中的成员。 五、多态的应用 多态的应用非常广泛。在上面的示例代码中,我们使用了多态来实现不同的动作。例如,在`Activities`类中,...
- 当子类对象访问成员变量时,首先会在子类中查找是否有定义的变量。如果找到,就会使用子类中的变量;如果没有找到,系统会向上搜索父类中是否定义了该变量。如果父类中也没有,则会导致编译错误。 - 在上述例子...
这样可以实现父类的初始化,并在子类中实现对父类成员变量的访问和操作。 在实际应用中,C++类继承可以广泛应用于各种领域,如网络编程、数据库编程、图形编程等。通过继承,可以实现代码的重用和模块化,提高编程...
7. **内存分配与垃圾回收**:在Java的内存模型中,父类的属性会在子类对象的内存空间中分配,这意味着父类的实例变量是子类对象的一部分。当子类对象被垃圾回收时,其包含的父类部分也会一同被回收。 综上所述,`...
`public` 是一个访问控制修饰符,它表示该成员变量或方法可以被任何地方访问,无论是类内部还是外部,甚至是继承自该类的子类。这种开放性的设计使得数据和方法易于访问,但也可能导致程序的不安全性增加。 例如,...
- 变量多态:声明为父类类型的变量可以存储子类对象。 - 形参多态:函数参数可以是父类类型,允许接收子类对象。 - 返回值多态:函数返回值类型为父类,可返回子类对象。 - 引用类型转换: - 向上转型:自动...
向下转型通常用在需要访问子类特有的成员时,但这种操作需要谨慎处理,因为如果父类引用并不指向一个子类对象,将会抛出ClassCastException异常。为了避免这种情况,推荐使用Java中的instanceof关键字来检查对象的...