标签:构造 strong mes 调用 参数 main stat style line
在c#中:
注意: 子类并没有继承父类的构造函数,而是会默认调用父类那个无参数的构造函数。 如果一个子类继承了一个父类,那么这个子类除了可以使用自己的成员外,还可以使用从父类那里继承过来的成员。但是父类永远都只能使用自己的成员,而不能使用子类的成员。 子类之间也不能互相使用对方的成员。 里氏转换的概念: 1)、子类可以赋值给父类 2)、如果父类中装的是子类对象,那么可以讲这个父类强转为子类对象。 namespace 里氏转换_接口练习 { class Program { static void Main(string[] args) { //测试1 //IFavorateFood iff = new Cat();//子类可以赋值给父类 //iff.Food(); //IVoice iv = new Cat(); //iv.Voice() //测试2 //IVoice Pvoice = new Cat(); //Pvoice.Voice();//只能调用IVoice中的方法 //Cat cat = Pvoice as Cat;//如果父类装的子类对象,则可以将父类强转为子类对象 //cat.Food(); //测试3 IVoice Pvoice = new Cat(); IFavorateFood pFavorateFood = Pvoice as IFavorateFood; pFavorateFood.Food(); Console.ReadLine(); } } } public class Cat : IFavorateFood, IVoice { public void Food() { Console.WriteLine("我喜欢的事物是老鼠"); } public void Voice() { Console.WriteLine("喵喵喵"); } } interface IFavorateFood { void Food(); } interface IVoice { void Voice(); }
Java中强制类型转换在多态中的应用:
//动物类 abstract class Animal{ String name; public Animal(String name){ this.name = name; } public abstract void run(); } //老鼠 class Mouse extends Animal{ public Mouse(String name){ super(name); } public void run(){ System.out.println(name+"四条腿慢慢的走!"); } //老鼠特有方法---打洞 public void dig(){ System.out.println("老鼠在打洞.."); } } //鱼 class Fish extends Animal{ public Fish(String name){ super(name); } public void run(){ System.out.println(name+"摇摇尾巴游啊游 !"); } //吹泡泡 public void bubble(){ System.out.println(name+"吹泡泡...!"); } } class Demo2 { public static void main(String[] args) { /* Animal a = new Mouse("老鼠"); //多态 //调用子类特有的方法 Mouse m = (Mouse)a; //强制类型转换 m.dig(); */ Mouse m = new Mouse("米老鼠"); Fish f = new Fish("草鱼"); print(f); } //需求: 定义一个函数可以接收任意类型的动物对象,在函数内部要调用到动物特有的方法。 public static void print(Animal a){ // Animal a = new Mouse("米老鼠"); if(a instanceof Fish){ Fish f = (Fish)a; f.bubble(); }else if(a instanceof Mouse){ Mouse m = (Mouse)a; m.dig(); } } }
标签:构造 strong mes 调用 参数 main stat style line
原文地址:https://www.cnblogs.com/qicao/p/8934203.html