using System;
namespace VR30Lesson11
{
class MainClass
{
public static void Main (string[] args)
{
Console.WriteLine ("Hello World!");
Man m = new Man ();
//m.Test ();
Child c = new Child ();
//c.Test ();
//父类的引用指向子类的对象
Man m1 = new Child ();
//m1.Test ();
//重载 overload 重写 overide
//当父类的方法不能满足子类的使用的时候
//子类可以重写父类的方法
People p = new People ();
People p1 = new Man();
p.Play ();
m.Play ();
p1.Play ();
//重写 和 隐藏
//父类的方法都可以隐藏
//重写只能重写虚方法
//当父类的引用指向子类的对象的时候
//隐藏:执行的是父类的方法
//重写:执行的是子类重写后的方法
//多态:重载和重写
//封装:
//属性:是对封装最好的体现
p.Age = 1000;
int num = p.Age;
Console.WriteLine (p.Age );
}
}
//
class People{
public string name;
//字段
private int age;
//属性
public int Age {
set {
age = value;
}
get {
return age;
}
}
//public string Name{ set;get}
//只能重写父类的虚方法 virtual
public virtual void Play(){
Console.WriteLine ("万达年会来一曲");
}
public void Eat(){
}
}
//男人类 继承人类 基类
//继承:子类可以直接使用父类的属性和方法
//父类不能直接使用子类的属性 和方法
//C# 单继承//一个只允许有一个父类,但是可以有很多子类
//继承是可以传递的
class Man:People {
//public override void Eat(){
//}
public void Test(){
Console.WriteLine ("我是父类的Test");
}
//重写父类的方法
public override void Play(){
Console.WriteLine ("LOL我要拿冠军");
}
}
class Child :Man {
//隐藏父类的方法
new public void Test (){
//base 指父类的对象
//base.Test ();
name = "";
Console.WriteLine ("我是子类的Test");
}
}
}