在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();
}
}
}

c#中的里氏转换和Java中强制类型转换在多态中的应用的更多相关文章

  1. js字符串转换为数字的三种方法。(转换函数)(强制类型转换)(利用js变量弱类型转换)

    js字符串转换为数字的三种方法.(转换函数)(强制类型转换)(利用js变量弱类型转换) 一.总结 js字符串转换为数字的三种方法(parseInt("1234blue"))(Num ...

  2. c#中convert.toInt32和int.parse()和强制类型转换的区别

    string a="123"; int i=(int)a; 这是会出现错误因为:强制类型转换只能转换值类型不能转换引用类型 string属于引用类型    强制类型转换时如果值类型 ...

  3. java的强制类型转换

    java强制类型转换  详细连接https://www.cnblogs.com/kuangwong/p/6198862.html 在Java项目的实际开发和应用中,常常需要用到将对象转为String这 ...

  4. Java学习笔记--继承和多态(中)

    1.通过继承来开发超类(superclass) 2.使用super 关键词唤起超类的构造方法 3.在超类中覆盖方法 4.区分override和overload 5.在Object类中探索toStrin ...

  5. Java基础12 类型转换与多态

    链接地址:http://www.cnblogs.com/vamei/archive/2013/04/01/2992662.html 作者:Vamei 出处:http://www.cnblogs.com ...

  6. Java基础12 类型转换与多态(转载)

    类型检查 Java的任意变量和引用经过类型声明(type declaration),才能使用.我们之前见过对象数据.类数据.方法参数.方法返回值以及方法内部的自动变量,它们都需要声明其类型.Java是 ...

  7. java中的时区转换

    目录 java中的时区转换 一.时区的说明 二.时间的表示 三.时间戳 四.Date类和时间戳 五.java中的时区转换 java中的时区转换 一.时区的说明 地球表面按经线从东到西,被划成一个个区域 ...

  8. C#中的强制类型转换与as转换的区别

    C#中的强制类型转换 例如有ClassA与ClassB两个类创建两个类的对象进行转换 1 2 ClassA a = new ClassA();  ClassB b = new ClassB(); 如果 ...

  9. Python中进制转换函数的使用

    Python中进制转换函数的使用 关于Python中几个进制转换的函数使用方法,做一个简单的使用方法的介绍,我们常用的进制转换函数常用的就是int()(其他进制转换到十进制).bin()(十进制转换到 ...

随机推荐

  1. FZU 2218【状压】

    题意: 给出长为n的字符串,含有前k种小写字母,求两个不含重复元素的连续子串,使得他们的长度乘积最大. 思路: 字符种类16 ->(套路) 状压 暴力2000*2000得所有连续子串的长度,得每 ...

  2. mui框架使用心得

    这段时间一直在用mui框架做项目,现在很多快速开发的app大部分是用MUI和APICloud开发的.所以我就把他们对比了一下. mui有自己的UI组件,我在项目中,很少用框架的UI组件,而使用框架的j ...

  3. python爬虫——web前端基础(4)

    CSS,指层叠样式表,用来定义如何显示HTML元素,一般和HTML配合使用. 在HTML中使用CSS样式的方法: 内联样式表:CSS代码直接写在现有的HTML标记中,直接使用style属性改变样式.例 ...

  4. thinkPHP5 tablib标签库自定义方法

    具体可以参照thinkphp\library\think\template\taglib\Cx.php这里面的写法我在common模块下新建了一个文件夹taglib,新建了一个Test.php文件 n ...

  5. Linux命令 查看Linux版本和是否联网

    1.查看Linux内核版本 1.1 $ cat /proc/version [heima01@heima01 ~]$ cat /proc/version Linux version 2.6.32-57 ...

  6. Java流程控制和数组

    流程控制 Java中三种基本的流程控制结构:顺序结构,分支结构和循环结构. 顺序结构,任何编程语言中都会有的程序结构. 分支结构:Java语言中常见的两种, if语句和switch语句. if语句,使 ...

  7. Djano调试工具debug-toolbar

    Djano调试工具debug-toolbar   django-debug-toolbar 调试工具使用文档 安装 pip install django-debug-toolbar 配置 在setti ...

  8. Announcing .NET Core 2.1

    Announcing .NET Core 2.1 https://blogs.msdn.microsoft.com/dotnet/2018/05/30/announcing-net-core-2-1/ ...

  9. python 8 函数

    调用函数 Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数.可以直接从Python的官方网站查看文档: 也可以在交 ...

  10. 一、Postgresql的基本操作

    ---------------------------------------------------------------------------------------------------- ...