在c#中:

注意:
子类并没有继承父类的构造函数,而是会默认调用父类那个无参数的构造函数。
如果一个子类继承了一个父类,那么这个子类除了可以使用自己的成员外,还可以使用从父类那里继承过来的成员。但是父类永远都只能使用自己的成员,而不能使用子类的成员。
子类之间也不能互相使用对方的成员。
里氏转换的概念:
)、子类可以赋值给父类
)、如果父类中装的是子类对象,那么可以讲这个父类强转为子类对象。
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();
}
}
}

最新文章

  1. MySql常用数据类型分析
  2. Linux命令總結
  3. Linux下MySQL数据库常用基本操作 一
  4. 淘宝天猫网站停止支持IE6、IE7浏览器,你还在用xp吗?
  5. IOS 杂笔-4(属性与成员变量的区别)
  6. Ajax status状态详解
  7. 《ISCSI集中存储》RHEL6——CE
  8. 关于ANSI 和 Unicode
  9. how computer boot up?
  10. 浅谈CSS3动画的凌波微步--steps()
  11. thrift实现HDFS文件操作
  12. Oracle-03:关系型数据库和非关系的数据库的各自优缺点与区别
  13. L2-022 重排链表 (25 分)
  14. 观察者模式与.NET的delegate、event机制
  15. ASP.NET MVC5高级编程 之 数据注解和验证
  16. 使用qemu模拟调试内核和debian根文件系统
  17. Jersey RESTful WebService框架学习(八)maven搭建
  18. 【转】classpath和环境变量设置
  19. 洛谷P4180 [BJWC2010]次小生成树(最小生成树,LCT,主席树,倍增LCA,倍增,树链剖分)
  20. mysql单表体积和一个库设计多少张表为妥

热门文章

  1. MYSQL limit,offset 区别(转)
  2. 【转】insert忽略重复、mysql插入操作跳过、插入覆盖覆盖、mysql更新重复
  3. 2017-9-2 NOIP模拟赛
  4. 「GXOI / GZOI2019」逼死强迫症——斐波那契+矩阵快速幂
  5. Python学习笔记(迭代,列表解析,生成器)
  6. 外网连接Mysql云数据库
  7. 8.Python初窥门径(文件操作)
  8. iOS 技术支持
  9. 关于EasyML的使用
  10. window.addeventlistener使用方法