您的位置:首页 > 编程语言 > C#

2015 5.16 C# 继承和多态

2015-05-16 19:35 169 查看
类的层次结构有两种基本的构造方式 自顶向下 自底向上

基类的保护成员是指允许派生类的方法代码访问,而不是指通过派生类的对象访问

如果基类中的字段通过公有且可读写的属性进行了封装,那么建议将字段定义为私有的,这样包括其派生类在内的所有其他类型都必须通过属性进行访问

隐藏基类成员

如果派生类中定义了与基类相同的成员,默认情况下基类的成员在派生类中会被隐藏,即派生类成员覆盖了基类成员 用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: