面向对象之父类变量指向子类实例对象分析
2015-06-09 19:52
344 查看
父类
子类
person stu = new Student("ss");
1、父类变量可以指向子类的实例对象,反之则不可以。
2、当创建一个子类对象时,如果是它的父类变量接收的它的子类对象,那么它只能调用父类的成员;(此过程中,此父类变量指向了父类成员,并没有指向这个子类成员);
3、例外情况:通过重写(override),父类变量可以调用子类的重写方法;
4、子类继承父类的所有成员,但是只能访问父类的非私有成员;
Student onestu = new Student("ss");
1、当创建一个子类对象时,如果声明的变量也是子类类型;调用时,首先查找子类中是否有该成员,有则调用;如果没有,到它的父类中寻找,有则调用
person stu = new Student("ss");
Student onestu = (Student)stu;
onestu.SayHi();
1、强制类型转换成子类,重新指向子类的实例对象
public class person { public static string markup; static person() { markup = "markup"; } //无参数构造函数 //public person() //{ // Console.WriteLine("调用person构造函数"); //} public person(int parage, string paraname, string parahobby) { age = parage; name = paraname; hobby = parahobby; } private string name; public string Name { get { return name; } set { name = value; } } private int age; public int Age { get { return age; } set { age = value; } } private string hobby; public string Hobby { get; set; } public void SayHi() { Console.WriteLine("Person SayHi Method"); } }
子类
public class Student:person { public string No; //调用无参构造函数,同时调用有参数构造函数的方式 public Student():base(123,"sdf","sd") { Console.WriteLine("调用Student的无参数构造函数"); } public Student(string s):this() { Console.WriteLine("调用Student的有参数构造函数"); } public void SayHi() { Console.WriteLine("大家好,我是{0},{1},{2}", this.Name, this.Age, this.Hobby); } }
person stu = new Student("ss");
1、父类变量可以指向子类的实例对象,反之则不可以。
2、当创建一个子类对象时,如果是它的父类变量接收的它的子类对象,那么它只能调用父类的成员;(此过程中,此父类变量指向了父类成员,并没有指向这个子类成员);
3、例外情况:通过重写(override),父类变量可以调用子类的重写方法;
4、子类继承父类的所有成员,但是只能访问父类的非私有成员;
Student onestu = new Student("ss");
1、当创建一个子类对象时,如果声明的变量也是子类类型;调用时,首先查找子类中是否有该成员,有则调用;如果没有,到它的父类中寻找,有则调用
person stu = new Student("ss");
Student onestu = (Student)stu;
onestu.SayHi();
1、强制类型转换成子类,重新指向子类的实例对象
相关文章推荐
- 秋游小记
- Kafka学习笔记-基本概念与安装部署
- 数组中异常数发现
- 面向对象之静态成员
- 北师大历史系1965级同学聚会(山西长治)之三
- 20150607结构体,枚举,共同体
- LevelDB场景分析4--BackgroundCompaction
- 第十四周 项目一--小玩文件(1)
- POJ3450:Corporate Identity(后缀数组)
- js上传图片预览实现
- 论如何搞定可恶的口腔溃疡
- heap&stack
- 20150608位操作
- thinkphp使用flash上传验证登录问题
- MAC pro 安装和使用『brew』
- 《摇滚南京》——"人生下来就是孤独"
- poj - 3041 Asteroids (二分图最大匹配+匈牙利算法)
- 随笔3
- Java笔记01 编程基础与java入门
- WebBrowser之获取跳转页面的Document接口源码