2015 5.16 C# 继承和多态
2015-05-16 19:35
169 查看
类的层次结构有两种基本的构造方式 自顶向下 自底向上
基类的保护成员是指允许派生类的方法代码访问,而不是指通过派生类的对象访问
如果基类中的字段通过公有且可读写的属性进行了封装,那么建议将字段定义为私有的,这样包括其派生类在内的所有其他类型都必须通过属性进行访问
隐藏基类成员
如果派生类中定义了与基类相同的成员,默认情况下基类的成员在派生类中会被隐藏,即派生类成员覆盖了基类成员 用new来修饰提高代码可读性
base 关键字,当派生类隐藏了基类成员时,base关键字就能发挥作用:直接写出的成员名表示派生类的成员,增加了base引用的成员表示被隐藏的基类成员
用base声明创建对象时调用的基类重载构造函数
虚拟方法和重载方法
View Code
基类的保护成员是指允许派生类的方法代码访问,而不是指通过派生类的对象访问
如果基类中的字段通过公有且可读写的属性进行了封装,那么建议将字段定义为私有的,这样包括其派生类在内的所有其他类型都必须通过属性进行访问
隐藏基类成员
如果派生类中定义了与基类相同的成员,默认情况下基类的成员在派生类中会被隐藏,即派生类成员覆盖了基类成员 用new来修饰提高代码可读性
base 关键字,当派生类隐藏了基类成员时,base关键字就能发挥作用:直接写出的成员名表示派生类的成员,增加了base引用的成员表示被隐藏的基类成员
用base声明创建对象时调用的基类重载构造函数
虚拟方法和重载方法
sing System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main() { Student s1=new Student(101,"王小红"); Console.WriteLine(s1); Student s2=new Graduate(101,"王晓红","张大伟"); Console.WriteLine(s2); Console.WriteLine(s1.Equals(s2)); Console.ReadLine(); } } public class Student { private string name; public string Name { get { return name; } } private int id; public int ID { get { return id; } } public Student(int id, string name) { this.id = id; this.name = name; } public override string ToString() { return string.Format("学号{0},姓名{1}", id, name); } public sealed override bool Equals(object obj) { if (obj is Student && ((Student)obj).id == this.id) return true; else return false; } } public class Graduate : Student { private string supervisor; public string Supervisor { get { return supervisor; } set { supervisor = value; } } public Graduate(int id, string name, string supervisor) : base(id, name) { this.supervisor = supervisor; } public override string ToString() { return base.ToString() + ",导师:" + supervisor; } } }
View Code
相关文章推荐
- C#和Java的类、继承、重写与多态
- C# 读书笔记之继承与多态
- C#中的继承、重写、覆盖、多态、virtual override 以及其他
- C# 面向对象特性 封装 继承 多态
- C# 面向对象三大特性:封装、继承、多态
- C#封装、继承和多态
- C# 继承 多态 密封
- C#中的封装、继承和多态
- C# 类的重载继承和多态
- C# 学习历程——类的封装,继承与多态
- C#中简单的继承和多态
- C#的封装、继承和多态
- C#的继承多态与Java中的不同
- 关于C#面向对象三个特征:继承,封装,多态的说明
- c# 封装,继承,多态
- C#继承和多态
- C#学习——继承接口多态
- 【c#】接口、继承、多态、接口的多态
- 《程序员的第一年》---------- 复习一下C#的【封装 多态 继承 -----简单计算器源码实例】
- C# 面向对象三大特性:封装、继承、多态