子类继承父类的属性和方法,使创建子类变得很简单,实现了代码重用。继承还有一个重要的特性,父类对象可以引用子类实例。也就是子类实例可以赋值给父类的对象变量。
这个特性可以这样理解:儿子继承父亲,儿子又把管理自己事务的权利交给父亲,那么父亲就可以代表儿子处理事务,这就是父类对象引用子类实例。现在生活中,父母可以代表儿子处理事务,总公司可以代表子公司生命权利。
父类指针要访问子类的成员的情况下,要强制类型转换。
父类的对象变量=new 子类类型;
((子类类型)父类引用).子类变量
using System;
class Father
{
private int _wealth = 5000;
public void ShowWealth()
{
Console.WriteLine("父亲拥有的财产{0}", this._wealth);
}
}
class Son: Father
{
public void PlayGame()
{
Console.WriteLine("玩游戏");
}
}
class Daughter: Father
{
public void Music()
{
Console.WriteLine("听音乐");
}
}
class Test
{
static void Main()
{
Father myfather1 = new Son();
myfather1.ShowWealth();
((Son)myfather1).PlayGame();
Father myfather2 = new Daughter();
((Daughter)myfather2).Music();
}
}
别人的总结:
将子类对象赋值给父类对象,所得到对象是这样的一个对象:
它是一个编译是为父类对象,但运行却是一个子类对象。具体特征如下:
1.被声明为父类对象
2.拥有父类属性
3.占用子类的内存空间
4.子类方法覆盖父类的方法时,此时对象调用的是子类的方法;否则,自动调用继承父类的方法.
5.我人认为这个对象既不是父类对象,也不是子类对象.当我们用到它的方法时,
我便把它看成子类对象;若用到它的属性时,我把它看成父类对象.
它是一个占用父类属性,而使用子类方法的对象.至于到底是什么对象,我认为还是得根据声明来,它应算是父类对象,但拥有子类方法.
分享到:
相关推荐
父类赋值给子类的一个小方法,仅供学习参考...
父类引用子类对象,父类对象和子类对象之间的引用关系和区别
java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p...子类--构造器
java 子类对象赋值给父类对象的使用,包括代码及详解,个人笔记
此例子介绍了c#中,父类可以代替子类做很多事情。 此例适合初学者。
java多态性详解——父类引用子类对象
父类引用指向子类对象[归纳].pdf
有关子类和父类。A是子类,Teacher是父类。A是Teacher 的一种(子类)会继承父类李非私
NULL 博文链接:https://2528.iteye.com/blog/1523901
主要介绍了java子类继承父类实例-披萨的选择实现代码,具有一定借鉴价值,需要的朋友可以参考下。
【java】父类声明子类实例化.mhtml
java多态性详解——父类引用子类对象.pdf
NULL 博文链接:https://fuckdkjlfsaene.iteye.com/blog/767245
最近对将子类对象赋值给父类对象有点心得,想和大家分享一下.但本人水平有限,请各位指正和批评. 言归正传,下面是几个小例子,请大家看一看. 测试一 父类: public class Supclass { public void print() { ...
利用C#反射将子类舍弃多余的属性转换为父类,用途比较少。
因为子类中有一个隐藏的引用super会指向父类实例,所以在实例化子类之前会先实例化一个父类,也就是说会先执行父类的构造方法,由于s中包含了父类的实例,所以s可以调用父类的方法。 下面我们来看一下代码:
如果一个类继承一个父类,那么子类会拥有父类所规定的所以成员 子类还可以拥有父类没有的独有成员 ...声明父类变量,实例化子类对象 Person p = new Student(); p.personshow();//说明不可以调用子类的方法,还是父类
c++里,指针和引用是很重要的概念,这个程序不仅对指针和引用做了说明、使用,而且对子类不能继承父类虚函数也做了说明。
父类引用指向子类对象时,没法调用子类特有的方法; 父类引用指向子类对象: java中子类强转父类,实际上依然是子类; 该引用只能调用父类中定义的方法和变量; 如果子类中重写了父类中的一个方法,那么在...