面向对象--里氏转换练习

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace winformjicheng
{
class Program
{
static void Main(string[] args)
{
student stu = new student("张飞", "001", "男", 80);
stu.studentsayscore();
program1 pro = new program1("王五", "008", "男", 7);
pro.program1say();

//里氏转换1 子类可以赋值给父类:如果有一个地方需要一个父类对象,可以用一个子类对象代替;
string str=string.Join(",", new string[] { "2", "2", "2" });
Console.WriteLine(str);
//里氏转换 2 如果父类中装的是子类对象,可以将父类转换成子类
person pe = stu;
//student ss = (student)pe;
// ss.studentsayscore();
// Console.ReadKey();
//里氏转换--is 用法:(个人理解:pe可以转换为student 类么。可以的话就执行下面语句)
if (pe is student)
{
student ss = (student)pe;
ss.studentsayscore();
Console.ReadKey();

}
else
Console.WriteLine("转换失败");
//里氏转化--as 用法 (pe 可以转化为student 类么,可以的话直接转化完成输出sss 负责输出NUll )
student sss = pe as student;
sss.studentsayscore();
Console.ReadKey();

}

}
}

时间: 2024-10-13 01:35:54

面向对象--里氏转换练习的相关文章

.Net学习 第2季04 C#面向对象 里氏转换 随机数 protected

.Net 视频学习第2季 C#面向对象 面向对象 里氏转换 随机数 protected 里氏转换:子类对象可以赋值给父类对象:如果父类中装的是子类对象,可以将此父类对象强制转换成子类对象. 子类对象可以调用父类成员,但父类对象永远只能调用自己的成员. is或者as均表示类型转换,is返回true/false,as返回转换后对象/null class Person { public string Name {get;set;} } class Student:Person { } class Te

里氏转换

里氏转换 子类可以赋值给父类 如果父类中装的是子类,可以将父类转换成子类 可以使用关键字as/is转换 class Program { static void Main(string[] args) { //子类赋值给父类 Person p = new Student(); //父类中装的是子类,可以将父类转换成子类 Student s = (Student)p; //使用as关键字转换 转换是被返回null Teacher t = p as Teacher; //使用关键字is转换 if (p

20151024_004_C#基础知识(C#中的访问修饰符,继承,new关键字,里氏转换,is 和 as,多态,序列化与反序列化)

1:C#中的访问修饰符 public: 公共成员,完全公开,没有访问限制. private: 私有的,只能在当前类的内部访问. protected: 受保护的,只能在当前类的内部以及该类的子类中访问. internal: 只能在当前项目中访问,在同一个项目中,internal和public的权限是一样的. protected internal: protected + internal权限. 1.1:能够修饰类的访问修饰符只有两个: public / internal 1.2:接口中的成员不允许

.Net学习笔记----2015-06-23(继承(里氏转换))

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; /*里氏转换 * 1,子类可以赋值给父类:如果一个地方需要一个父类作为参数,可以给一个子类代替 * 2,如果父类中装的是子类对象,那么可以将这个父类对象强制转换成子类对象 * * 子类对象可以调用父类中的成员,但是父类对象只能调用自己的成员 * **/ namespa

C++ Primer 学习笔记_67_面向对象编程 --转换与继承、复制控制与继承

面向对象编程 --转换与继承.复制控制与继承 I.转换与继承 引言: 由于每一个派生类对象都包括一个基类部分,因此能够像使用基类对象一样在派生类对象上执行操作. 对于指针/引用,能够将派生类对象的指针/引用转换为基类子对象的指针/引用. 基类类型对象既能够作为独立对象存在,也能够作为派生类对象的一部分而存在,因此,一个基类对象可能是也可能不是一个派生类对象的部分,因此,没有从基类引用(或基类指针)到派生类引用(或派生类指针)的(自己主动)转换. 关于对象类型,尽管一般能够使用派生类型的对象对基类

里氏转换,arraylist,path,file

1.里氏转换1).子类可以赋值给父类2).如果父类中装的是子类对象,那么可以将这个父类强转为子类对象. 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace _03里氏转换练习 8 { 9 class Program 10 { 11 static void Main(str

.Net学习笔记----2015-07-21(C#基础复习05,里氏转换)

里氏转换: 1.子类可以赋值给父类 2.如果父类中装的是子类对象,那么可以将父类转换为子类对象. 3.as 4.is 如果一个子类继承了一个父类,那么这个子类除了可以使用自己的成员外,还可以使用从父类那里继承过来的成员 但是,父类永远只能使用自己的成员,而不能使用子类的成员 子类之间也不能互相使用对方的成员 class Program { static void Main(string[] args) { Person person = new Student(); Teacher t = pe

c#中的里氏转换和Java中强制类型转换在多态中的应用

在c#中: 注意: 子类并没有继承父类的构造函数,而是会默认调用父类那个无参数的构造函数. 如果一个子类继承了一个父类,那么这个子类除了可以使用自己的成员外,还可以使用从父类那里继承过来的成员.但是父类永远都只能使用自己的成员,而不能使用子类的成员. 子类之间也不能互相使用对方的成员. 里氏转换的概念: 1).子类可以赋值给父类 2).如果父类中装的是子类对象,那么可以讲这个父类强转为子类对象. namespace 里氏转换_接口练习 { class Program { static void

面向对象进阶--转换构造函数,重载,类型转换函数

转换构造函数 1.将其他类型转换为当前类类型需要借助转换构造函数. 具体看例子:点击 类型转换函数 1.将当前类类型转换为其他类型,只能出现在类中. 2.语法格式: operator type(){ //TODO: return data; } operator 是 C++ 关键字,type 是要转换的目标类型,data 是要返回的 type 类型的数据. 具体点击 再谈转换构造函数和类型转换函数(例子) 具体点击 类型转换的本质 具体点击 四种类型转换运算符 static_cast     d