C#封装 继承 多态
2017-08-18 11:46
267 查看
[align=left]usingSystem;[/align]
[align=left]usingSystem.Collections.Generic;[/align]
[align=left]usingSystem.Linq;[/align]
[align=left]usingSystem.Text;[/align]
[align=left]usingSystem.Threading.Tasks;[/align]
[align=left]
[/align]
[align=left]namespacelesson10[/align]
[align=left]{[/align]
enum
Sex
[align=left] {[/align]
[align=left] men,women[/align]
[align=left] }[/align]
class
Person
[align=left] {[/align]
public
string
name;//字段骆驼命名
public
Sex
sex;
public
double
Money;
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
public
Person() {
Console.WriteLine("默认构造方法调用"); }//默认访问修饰符是私有的
[align=left]
[/align]
[align=left]
[/align]
public
Person(stringname,
Sex
sex)
[align=left] {[/align]
[align=left] this.name = name;//如果类没建对象,this等于类,如果创建对象了,this就指对象[/align]
[align=left] this.sex = sex;[/align]
[align=left] }[/align]
[align=left]
[/align]
[align=left] }[/align]
class
Teacher:
Person
[align=left] {[/align]
public
string
name;//字段骆驼命名
public
Sex
sex;
public
string
teach;
[align=left] //public Teacher()[/align]
[align=left] //{[/align]
[align=left]
[/align]
[align=left] // Console.WriteLine("teachr");[/align]
[align=left] //}[/align]
public
Teacher(stringname,
Sex
sex, string
teach):base(name,sex)//base继承父类的字段
[align=left] //base()有参数 父类里面也必须要有有参数的构造函数[/align]
[align=left] {[/align]
[align=left] //this.name = name;[/align]
[align=left] //this.sex = sex;[/align]
[align=left] [/align]
[align=left] this.teach = teach;[/align]
[align=left] }[/align]
[align=left]
[/align]
public
void
WolkDog(Dogsl) {
[align=left] Console.WriteLine("遛狗");[/align]
[align=left] }[/align]
[align=left] }[/align]
class
Dog
[align=left] {[/align]
public
void
Bark() { Console.WriteLine(
"dog,bark"); }
[align=left] }[/align]
class
SmallDog:
Dog
[align=left] {[/align]
public
void
SmallDogBark() {
Console.WriteLine(
"sl,baek"); }
[align=left] }[/align]
[align=left]
[/align]
class
BigDog:
Dog
[align=left] {[/align]
public
void
BigDogBark() { Console.WriteLine(
"big,bark"); }
[align=left] }[/align]
[align=left]
[/align]
class
Student
: Person
[align=left]{[/align]
public
Student()
[align=left] {[/align]
[align=left]
[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] //public string name;[/align]
[align=left] //public Sex sex;[/align]
public
Teacher
teacher;
public
Student(
Sexsex,
Teacher teacher) :
base()//base()无参数 父类里面也必须要有无参数的构造函数
[align=left] {[/align]
[align=left] [/align]
[align=left] this.sex = sex;[/align]
[align=left]
[/align]
[align=left] this.teacher = teacher;[/align]
[align=left] }[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left] }[/align]
[align=left] //面向对象 先找对象 [/align]
[align=left] //class Elephant[/align]
[align=left] //{[/align]
[align=left]
[/align]
[align=left] //}[/align]
[align=left] //class IceBox[/align]
[align=left] //{[/align]
[align=left] // public void Open() { Console.WriteLine("冰箱门打开了"); }[/align]
[align=left] // public void Zhuang(string thing)[/align]
[align=left] // {[/align]
[align=left]
[/align]
[align=left] // Console.WriteLine("把" + thing + "装进冰箱");[/align]
[align=left] // }[/align]
[align=left] // public void Off() { Console.WriteLine("冰箱门关上了"); }[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left] //}[/align]
[align=left]
[/align]
[align=left] //class House //封装[/align]
[align=left] //{[/align]
[align=left] // double price;//私有的[/align]
[align=left] // string add;[/align]
[align=left]
[/align]
[align=left] // public string Add[/align]
[align=left] // {[/align]
[align=left] // get[/align]
[align=left] // {[/align]
[align=left] // return Add;[/align]
[align=left] // }[/align]
[align=left]
[/align]
[align=left] // set[/align]
[align=left] // {[/align]
[align=left] // Add = value;[/align]
[align=left] // }[/align]
[align=left] // }[/align]
[align=left]
[/align]
[align=left] // public House(double price,string add) {[/align]
[align=left]
[/align]
[align=left] // this.price = price;[/align]
[align=left] // this.add = add;[/align]
[align=left]
[/align]
[align=left] // }[/align]
[align=left] //}[/align]
[align=left]
[/align]
class
Master
[align=left] {[/align]
public
void
Exam() { Console.WriteLine(
"师傅考试"
); }
[align=left] }[/align]
class
Disciple:
Master
[align=left] {[/align]
public
virtual
void
Exam() { Console.WriteLine("徒弟考试");
}
[align=left] }[/align]
class
Disciple5552:
Disciple
[align=left] {[/align]
public
override
voidExam() {
Console.WriteLine("徒孙考试"); }
[align=left] }[/align]
class
Program
[align=left] {[/align]
static
void
Main(string[] args)
[align=left] {[/align]
[align=left] //构造方法是与类名相同,并且无返回值,不加void;[/align]
[align=left] //作用 主要是创建对象,并给对象赋初始值[/align]
[align=left] //不带参数的构造方法称为默认构造[/align]
[align=left] //构造方法可以带有参数,可以重载[/align]
[align=left] //person 点不出来构造方法。 构造方法 只能在new对象中用 [/align]
[align=left] //如果给对象赋初始值可以在类里面写出带有参数的构造方法并使用;[/align]
[align=left] //Person person = new Person("张三",Sex.men );[/align]
[align=left] ////Person s = new Person();[/align]
[align=left] //// 优先调用无参数的构造方法,,如果在类里面没有任何对象,系统会默认一个构造 供我们使用,如果有带参数的构造的方法,[/align]
[align=left] ////调用默认构造时 必须显示的把默认构造写出来[/align]
[align=left] //Console.WriteLine(person.name );[/align]
[align=left] //Console.WriteLine(person .sex );[/align]
[align=left] //Teacher teacher = new Teacher("李",Sex.men ,"语文");[/align]
[align=left] //Student student = new Student("王",Sex.women ,teacher );[/align]
[align=left] //Console.WriteLine(teacher .teach );[/align]
[align=left] //Console.WriteLine(student .name );[/align]
[align=left]
[/align]
[align=left] //IceBox a = new IceBox();[/align]
[align=left] //Elephant b = new Elephant();[/align]
[align=left] //a.Open();[/align]
[align=left] //a.Zhuang("大象");[/align]
[align=left] //a.Off();[/align]
[align=left] //a.Open();[/align]
[align=left] //a.Zhuang("白菜");[/align]
[align=left] //a.Off();[/align]
[align=left] //面向对象的三大特性[/align]
[align=left]
[/align]
[align=left] //封装 继承 多态[/align]
[align=left] //封装 我们在创建对象时不需要外部人为的破幻对象所包含的值,此时就需要把字段给封装起来[/align]
[align=left] //具体的做法是把成员的字段用Private 来修饰,这样外部就无法拿到字段并修改所储存的数据,同时把私有的字段改成属性[/align]
[align=left] //通过属性修改字段的值,创建对象并初始化对象时,可以用带有参数的构造方法给字段赋值,[/align]
[align=left] //把字段写成私有,在外部拿不到,但是在类内部可以调用字段[/align]
[align=left] //继承 [/align]
[align=left] //被继承的称为父类,或者基类 继承的称为子类[/align]
[align=left] //当一个子类继承父类时 ,会把父类里面的成员继承过来[/align]
[align=left] //父类里面的成员用public修饰,共有的 会被继承过来,如果是private修饰,是私有的 继承过来不能用[/align]
[align=left] //共有继承过来的成员在任何地方都可以使用,私有继承过来的成员只能在父类内部使用,在类的外面不能使用,[/align]
[align=left] //protected继承过来的成员只能父类和子类里面使用类的外面不能用[/align]
[align=left] //里氏转换[/align]
[align=left] //为了在处理数据时,为了使所处理的数据类型达到统一,此时会把数据的类型统一写成父类类型[/align]
[align=left] //这样就可以把子类的对象赋值给父类;[/align]
[align=left] //里氏转换的第一个原则,把子类的对象赋值给父类,但是调用类里面的成员时只能调用父类里面的,子类里面的调不到[/align]
[align=left] //里氏转换的第二个原则,把父类的对象转换成子类,用as 在第一原则上建立的 转换不成功就是null[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left] //Person person = new Person();[/align]
[align=left] //Console.WriteLine(person.name );[/align]
[align=left] //Teacher teacher = new Teacher("li56+", Sex.men, "yu");[/align]
[align=left] //////Student student = new Student("lilkl", Sex.women, teacher);[/align]
[align=left]
[/align]
[align=left] ////Console.WriteLine(teacher.teach);[/align]
[align=left] ////Console.WriteLine(teacher.sex);[/align]
[align=left] ////Console.WriteLine(teacher.name );[/align]
[align=left] ////Console.WriteLine(student.name);[/align]
[align=left] ////Console.WriteLine(student.sex);[/align]
[align=left] ////Console.WriteLine(student.teacher);[/align]
SmallDog
sldog =
newSmallDog();
BigDog
bigdog =
newBigDog();
[align=left] //teacher.WolkDog(bigdog);[/align]
Dog
kl =
new Dog();
SmallDog
klll = kl
asSmallDog;
[align=left] klll.SmallDogBark();[/align]
[align=left] klll.Bark();[/align]
[align=left] //Dog dog = sldog;[/align]
[align=left] ////SmallDog sllll=(SmallDog )dog;//不能用强制转换[/align]
[align=left] //SmallDog sllll = dog as SmallDog;[/align]
[align=left] //sllll.Bark();[/align]
[align=left] //sllll.SmallDogBark();[/align]
[align=left] //BigDog slll = dog as BigDog;[/align]
[align=left] //bool issllll = sllll is BigDog;//判断它是不是大狗类[/align]
[align=left]
[/align]
[align=left] //Console.WriteLine(issllll);[/align]
[align=left] //if (slll != null)//转换不成功[/align]
[align=left] //{[/align]
[align=left] // slll.BigDogBark();[/align]
[align=left] //}[/align]
[align=left]
[/align]
[align=left] ////把值类型转换为引用类型的过程称为装箱 开辟双倍空间[/align]
[align=left] ////把引用类型转换成值类型称为拆箱 开辟双倍空间[/align]
[align=left] //int a = 10;[/align]
[align=left] //object obj = a;//所有的类都是object的子类 [/align]
[align=left] //Console.WriteLine(obj );[/align]
[align=left] //int b=(int )obj ;[/align]
[align=left]
[/align]
[align=left] //Disciple sasa = new Disciple();[/align]
[align=left] //Disciple5552 sa = new Disciple5552();[/align]
[align=left] //子类里面有何父类同名的方法需要在子类的方法前加new表示 用子类的方法替换父类的方法,称为方法替换[/align]
[align=left] //使用new有意隐藏继承过来的同名的方法 new void Exam[/align]
[align=left] //sasa.Exam();//各调个的方法[/align]
[align=left] //sa.Exam();[/align]
[align=left] //Disciple sasasa = sa;[/align]
[align=left] //多态[/align]
[align=left] //1.把父类里面的方法前面加virtual[/align]
[align=left] //2.在子类同名的方法前加 override 进行重写[/align]
[align=left] //当我们把一个子类的对象赋值给对象后,该对象在调用父类里面的虚方法时,如果子类重写了该虚方法,则调用的是子类[/align]
[align=left] //里面重写后的方法,否则就调用父类的虚方法[/align]
[align=left] //sasasa.Exam();[/align]
[align=left]
[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left]usingSystem.Collections.Generic;[/align]
[align=left]usingSystem.Linq;[/align]
[align=left]usingSystem.Text;[/align]
[align=left]usingSystem.Threading.Tasks;[/align]
[align=left]
[/align]
[align=left]namespacelesson10[/align]
[align=left]{[/align]
enum
Sex
[align=left] {[/align]
[align=left] men,women[/align]
[align=left] }[/align]
class
Person
[align=left] {[/align]
public
string
name;//字段骆驼命名
public
Sex
sex;
public
double
Money;
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
public
Person() {
Console.WriteLine("默认构造方法调用"); }//默认访问修饰符是私有的
[align=left]
[/align]
[align=left]
[/align]
public
Person(stringname,
Sex
sex)
[align=left] {[/align]
[align=left] this.name = name;//如果类没建对象,this等于类,如果创建对象了,this就指对象[/align]
[align=left] this.sex = sex;[/align]
[align=left] }[/align]
[align=left]
[/align]
[align=left] }[/align]
class
Teacher:
Person
[align=left] {[/align]
public
string
name;//字段骆驼命名
public
Sex
sex;
public
string
teach;
[align=left] //public Teacher()[/align]
[align=left] //{[/align]
[align=left]
[/align]
[align=left] // Console.WriteLine("teachr");[/align]
[align=left] //}[/align]
public
Teacher(stringname,
Sex
sex, string
teach):base(name,sex)//base继承父类的字段
[align=left] //base()有参数 父类里面也必须要有有参数的构造函数[/align]
[align=left] {[/align]
[align=left] //this.name = name;[/align]
[align=left] //this.sex = sex;[/align]
[align=left] [/align]
[align=left] this.teach = teach;[/align]
[align=left] }[/align]
[align=left]
[/align]
public
void
WolkDog(Dogsl) {
[align=left] Console.WriteLine("遛狗");[/align]
[align=left] }[/align]
[align=left] }[/align]
class
Dog
[align=left] {[/align]
public
void
Bark() { Console.WriteLine(
"dog,bark"); }
[align=left] }[/align]
class
SmallDog:
Dog
[align=left] {[/align]
public
void
SmallDogBark() {
Console.WriteLine(
"sl,baek"); }
[align=left] }[/align]
[align=left]
[/align]
class
BigDog:
Dog
[align=left] {[/align]
public
void
BigDogBark() { Console.WriteLine(
"big,bark"); }
[align=left] }[/align]
[align=left]
[/align]
class
Student
: Person
[align=left]{[/align]
public
Student()
[align=left] {[/align]
[align=left]
[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] //public string name;[/align]
[align=left] //public Sex sex;[/align]
public
Teacher
teacher;
public
Student(
Sexsex,
Teacher teacher) :
base()//base()无参数 父类里面也必须要有无参数的构造函数
[align=left] {[/align]
[align=left] [/align]
[align=left] this.sex = sex;[/align]
[align=left]
[/align]
[align=left] this.teacher = teacher;[/align]
[align=left] }[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left] }[/align]
[align=left] //面向对象 先找对象 [/align]
[align=left] //class Elephant[/align]
[align=left] //{[/align]
[align=left]
[/align]
[align=left] //}[/align]
[align=left] //class IceBox[/align]
[align=left] //{[/align]
[align=left] // public void Open() { Console.WriteLine("冰箱门打开了"); }[/align]
[align=left] // public void Zhuang(string thing)[/align]
[align=left] // {[/align]
[align=left]
[/align]
[align=left] // Console.WriteLine("把" + thing + "装进冰箱");[/align]
[align=left] // }[/align]
[align=left] // public void Off() { Console.WriteLine("冰箱门关上了"); }[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left] //}[/align]
[align=left]
[/align]
[align=left] //class House //封装[/align]
[align=left] //{[/align]
[align=left] // double price;//私有的[/align]
[align=left] // string add;[/align]
[align=left]
[/align]
[align=left] // public string Add[/align]
[align=left] // {[/align]
[align=left] // get[/align]
[align=left] // {[/align]
[align=left] // return Add;[/align]
[align=left] // }[/align]
[align=left]
[/align]
[align=left] // set[/align]
[align=left] // {[/align]
[align=left] // Add = value;[/align]
[align=left] // }[/align]
[align=left] // }[/align]
[align=left]
[/align]
[align=left] // public House(double price,string add) {[/align]
[align=left]
[/align]
[align=left] // this.price = price;[/align]
[align=left] // this.add = add;[/align]
[align=left]
[/align]
[align=left] // }[/align]
[align=left] //}[/align]
[align=left]
[/align]
class
Master
[align=left] {[/align]
public
void
Exam() { Console.WriteLine(
"师傅考试"
); }
[align=left] }[/align]
class
Disciple:
Master
[align=left] {[/align]
public
virtual
void
Exam() { Console.WriteLine("徒弟考试");
}
[align=left] }[/align]
class
Disciple5552:
Disciple
[align=left] {[/align]
public
override
voidExam() {
Console.WriteLine("徒孙考试"); }
[align=left] }[/align]
class
Program
[align=left] {[/align]
static
void
Main(string[] args)
[align=left] {[/align]
[align=left] //构造方法是与类名相同,并且无返回值,不加void;[/align]
[align=left] //作用 主要是创建对象,并给对象赋初始值[/align]
[align=left] //不带参数的构造方法称为默认构造[/align]
[align=left] //构造方法可以带有参数,可以重载[/align]
[align=left] //person 点不出来构造方法。 构造方法 只能在new对象中用 [/align]
[align=left] //如果给对象赋初始值可以在类里面写出带有参数的构造方法并使用;[/align]
[align=left] //Person person = new Person("张三",Sex.men );[/align]
[align=left] ////Person s = new Person();[/align]
[align=left] //// 优先调用无参数的构造方法,,如果在类里面没有任何对象,系统会默认一个构造 供我们使用,如果有带参数的构造的方法,[/align]
[align=left] ////调用默认构造时 必须显示的把默认构造写出来[/align]
[align=left] //Console.WriteLine(person.name );[/align]
[align=left] //Console.WriteLine(person .sex );[/align]
[align=left] //Teacher teacher = new Teacher("李",Sex.men ,"语文");[/align]
[align=left] //Student student = new Student("王",Sex.women ,teacher );[/align]
[align=left] //Console.WriteLine(teacher .teach );[/align]
[align=left] //Console.WriteLine(student .name );[/align]
[align=left]
[/align]
[align=left] //IceBox a = new IceBox();[/align]
[align=left] //Elephant b = new Elephant();[/align]
[align=left] //a.Open();[/align]
[align=left] //a.Zhuang("大象");[/align]
[align=left] //a.Off();[/align]
[align=left] //a.Open();[/align]
[align=left] //a.Zhuang("白菜");[/align]
[align=left] //a.Off();[/align]
[align=left] //面向对象的三大特性[/align]
[align=left]
[/align]
[align=left] //封装 继承 多态[/align]
[align=left] //封装 我们在创建对象时不需要外部人为的破幻对象所包含的值,此时就需要把字段给封装起来[/align]
[align=left] //具体的做法是把成员的字段用Private 来修饰,这样外部就无法拿到字段并修改所储存的数据,同时把私有的字段改成属性[/align]
[align=left] //通过属性修改字段的值,创建对象并初始化对象时,可以用带有参数的构造方法给字段赋值,[/align]
[align=left] //把字段写成私有,在外部拿不到,但是在类内部可以调用字段[/align]
[align=left] //继承 [/align]
[align=left] //被继承的称为父类,或者基类 继承的称为子类[/align]
[align=left] //当一个子类继承父类时 ,会把父类里面的成员继承过来[/align]
[align=left] //父类里面的成员用public修饰,共有的 会被继承过来,如果是private修饰,是私有的 继承过来不能用[/align]
[align=left] //共有继承过来的成员在任何地方都可以使用,私有继承过来的成员只能在父类内部使用,在类的外面不能使用,[/align]
[align=left] //protected继承过来的成员只能父类和子类里面使用类的外面不能用[/align]
[align=left] //里氏转换[/align]
[align=left] //为了在处理数据时,为了使所处理的数据类型达到统一,此时会把数据的类型统一写成父类类型[/align]
[align=left] //这样就可以把子类的对象赋值给父类;[/align]
[align=left] //里氏转换的第一个原则,把子类的对象赋值给父类,但是调用类里面的成员时只能调用父类里面的,子类里面的调不到[/align]
[align=left] //里氏转换的第二个原则,把父类的对象转换成子类,用as 在第一原则上建立的 转换不成功就是null[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left] //Person person = new Person();[/align]
[align=left] //Console.WriteLine(person.name );[/align]
[align=left] //Teacher teacher = new Teacher("li56+", Sex.men, "yu");[/align]
[align=left] //////Student student = new Student("lilkl", Sex.women, teacher);[/align]
[align=left]
[/align]
[align=left] ////Console.WriteLine(teacher.teach);[/align]
[align=left] ////Console.WriteLine(teacher.sex);[/align]
[align=left] ////Console.WriteLine(teacher.name );[/align]
[align=left] ////Console.WriteLine(student.name);[/align]
[align=left] ////Console.WriteLine(student.sex);[/align]
[align=left] ////Console.WriteLine(student.teacher);[/align]
SmallDog
sldog =
newSmallDog();
BigDog
bigdog =
newBigDog();
[align=left] //teacher.WolkDog(bigdog);[/align]
Dog
kl =
new Dog();
SmallDog
klll = kl
asSmallDog;
[align=left] klll.SmallDogBark();[/align]
[align=left] klll.Bark();[/align]
[align=left] //Dog dog = sldog;[/align]
[align=left] ////SmallDog sllll=(SmallDog )dog;//不能用强制转换[/align]
[align=left] //SmallDog sllll = dog as SmallDog;[/align]
[align=left] //sllll.Bark();[/align]
[align=left] //sllll.SmallDogBark();[/align]
[align=left] //BigDog slll = dog as BigDog;[/align]
[align=left] //bool issllll = sllll is BigDog;//判断它是不是大狗类[/align]
[align=left]
[/align]
[align=left] //Console.WriteLine(issllll);[/align]
[align=left] //if (slll != null)//转换不成功[/align]
[align=left] //{[/align]
[align=left] // slll.BigDogBark();[/align]
[align=left] //}[/align]
[align=left]
[/align]
[align=left] ////把值类型转换为引用类型的过程称为装箱 开辟双倍空间[/align]
[align=left] ////把引用类型转换成值类型称为拆箱 开辟双倍空间[/align]
[align=left] //int a = 10;[/align]
[align=left] //object obj = a;//所有的类都是object的子类 [/align]
[align=left] //Console.WriteLine(obj );[/align]
[align=left] //int b=(int )obj ;[/align]
[align=left]
[/align]
[align=left] //Disciple sasa = new Disciple();[/align]
[align=left] //Disciple5552 sa = new Disciple5552();[/align]
[align=left] //子类里面有何父类同名的方法需要在子类的方法前加new表示 用子类的方法替换父类的方法,称为方法替换[/align]
[align=left] //使用new有意隐藏继承过来的同名的方法 new void Exam[/align]
[align=left] //sasa.Exam();//各调个的方法[/align]
[align=left] //sa.Exam();[/align]
[align=left] //Disciple sasasa = sa;[/align]
[align=left] //多态[/align]
[align=left] //1.把父类里面的方法前面加virtual[/align]
[align=left] //2.在子类同名的方法前加 override 进行重写[/align]
[align=left] //当我们把一个子类的对象赋值给对象后,该对象在调用父类里面的虚方法时,如果子类重写了该虚方法,则调用的是子类[/align]
[align=left] //里面重写后的方法,否则就调用父类的虚方法[/align]
[align=left] //sasasa.Exam();[/align]
[align=left]
[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]
相关文章推荐
- c# 封装 继承 多态
- 《程序员的第一年》---复习一下C#的【封装 多态 继承 -----简单计算器源码实例】
- C# OOP模型(传说中的继承封装多态)
- C#的封装、继承和多态
- 用一个简单示例来说明C#中的继承、封装和多态
- C# 面向对象三大特性:封装、继承、多态
- C# 面向对象三大特性:封装、继承、多态
- 2、C#面向对象:封装、继承、多态、String、集合、文件(上)
- C#三大特性之 封装、继承、多态
- 用一个简单示例来说明C#中的继承、封装和多态
- 【C#学习】——封装、继承、多态
- 关于C#面向对象三个特征:继承,封装,多态的说明
- C# 学习历程——类的封装,继承与多态
- C# 继承,封装和多态
- 学习C# 继承 封装 多态
- 3、C#面向对象:封装、继承、多态、String、集合、文件(下)
- C#中的继承封装和多态知识点总结
- C# 面向对象:封装、继承、多态
- C#基础知识复习1代码规范-执行流程(c#)-面向对象-引用命名空间-封装-继承-访问修饰符-虚方法-静态成员-多态-抽象类等
- C# 面向对象编程之封装、继承、多态 <思维导图>