以父类的变量访问子类对象的成员
以父类声明变量,并将它指向用子类新建的对象。
此时使用此变量可调用 子类中覆盖父类中的成员函数,或子类中没有而父类中有的成员函数
用法:
利用父类的数组变量来访问子类对象的成员
(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)
分享到:
相关推荐
类的对象不能直接访问类声明的私有成员变量,否则破坏了信息隐藏的目的。 在C++中,为了防止某些数据成员或成员函数从外部被直接访问,可以将它们声明为private,这样编译器会阻止任何来自外部非友元的直接访问。 ...
子类不能继承父类中访问权限为private的成员变量和方法,子类可以重写父类的方法,及命名与父类同名的成员变量。 子类通过隐藏父类的成员变量和重写父类的方法,把父类的状态和行为改变为自身的状态和行为。注意:...
代码中设计了各个类的基类,设置私有成员变量,利用构造器对成员变量初始化,用geter、seter访问器设置、获取成员变量的值。继承基类并创建对象,在子类中调用父类方法。
对于类属性无论通过类还是对象来访问都是访问同一个对象,只要一个对象改变 了类属性,那么其他对象对应的类属性也改变了.成员变量不用显式初始化,只要定义了一个类属性或实例属性,系统 默认进行初始化。 局部变量 ...
(1) 子类拥有父类对象所有的属性和方法,父类中的私有属性和方法子类无法访问,只是拥有; (2) 子类可以拥有自己的属性和方法; (3) 子类可以用自己的方式实现父类的方法。 多态:程序中定义的引用变量所指向的具体...
对象访问成员变量时,会先在子类中查找有没有定义对应的变量,若子类中存在就会就近使用子类中的变量,若子类中没有定义就会沿着继承关系往上找有没有定义相应的变量,若父类中也没有则编译不通过。代码示例:
在Java学习过程中,在写类经常为用到public,private和protected,我个人的经验是一般类的成员变量都是用private,方法用public,类的内部用protected方法,如果是存在子类的,那我就会把父类中的成员变量变为...
面向对象中的继承指类的继承,类似父子继承 1、子类拥有父类的所有成员变量和成员函数 2、子类就是一种特殊的父类 3、子类对象可以当作父类对象使用(赋值兼容性原则) 4、子类可以拥有父类没有的方法和属性..........
模块5 深入Java面向对象 《Java程序设计... 5.2 继承 5.2.1 继承的实现 【例5-1】 图5-2 创建子类Sector 图5-3 选择父类Circle 《Java程序设计案例教程》教学课件05深入Java面向对象全文共47页,当前为第9页。 5.2 继
声明抽象类语法: abstract class{…… } 使用:父类中的某些抽象不包含任何逻辑,并需要在子类中重写,子类提供这种抽象方 法的实现细节 abstract 修饰符 3-2 抽象类可以具有指向子类对象的对象引用 abstract 修饰...
•即使通过null对象来访问类成员,程序也不会引发NullPointerException。 类成员不能访问实例成员。 单例类 •如果一个类始终只能创建一个对象,称为单例类。须符合以下几个条件: –1.我们把该类...
对象的使用包括引用对象的成员变量和方法,通过运算符·可以实现对变量的访问和方法的调 用,变量和方法可以通过设定一定的访问权限(见下面的例子)来允许或禁止其它对象对它的 访问。 我们先定义一个类 Point。 例子...
方法重写是指子类重新定义父类的方法,而方法重载是指在同一个类中定义多个同名但参数列表不同的方法。 3.什么是Java的静态关键字? 静态关键字用于修饰类的成员(方法、变量、代码块),使其在类加载时被初始化,...
保护成员变量: _foo:以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import * 普通成员变量:foo 类外可访问。 私有方法:__private_method...
//创建子类对象 System.out.println(s.toString()); //显示s的个人信息,调用继承父类的toString方法 s.setScore(80,88,95); //设置三门课的成绩 System.out.printf(“三门课的平均分:%.2f”, s.avg()); //显示...
文章目录前言特性中的继承访问控制符成员访问控制符private默认protectedpublic类的访问控制符非访问控制符static静态域静态方法finalfinal类final方法final字段和局部变量main()方法 你好,我是goldsun。 你有想法...
" " " "二、选择题 (30') " "1、关于被私有保护访问控制符private " "protected修饰的成员变量,以下说法正确的是( ) " "A.可以被三种类所引用:该类自身、与它在同一个包中的其他类、在 " "其他包中的该类的...
不仅第一次创建对象时,类中的所有静态变量都初始化,并且第一次访问某类(注意此时 未创建此类对象)的静态对象时,所有的静态变量也要按它们在类中的顺序初始化。 2、 继承时,对象的初始化过程 (1) 主类的超类...
域:一个代表和某对象或类相关的变量的成员 字段:和属性相同,是用来存储对象的值,可以直接访问数据且不能对数据添加任何限制,但是属性不能且可以对数据添加访问限制。一个在类或结构的定义中声明的变量。可以被...
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段...