c#中的里氏转换和Java中强制类型转换在多态中的应用
在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中强制类型转换在多态中的应用的更多相关文章
- js字符串转换为数字的三种方法。(转换函数)(强制类型转换)(利用js变量弱类型转换)
js字符串转换为数字的三种方法.(转换函数)(强制类型转换)(利用js变量弱类型转换) 一.总结 js字符串转换为数字的三种方法(parseInt("1234blue"))(Num ...
- c#中convert.toInt32和int.parse()和强制类型转换的区别
string a="123"; int i=(int)a; 这是会出现错误因为:强制类型转换只能转换值类型不能转换引用类型 string属于引用类型 强制类型转换时如果值类型 ...
- java的强制类型转换
java强制类型转换 详细连接https://www.cnblogs.com/kuangwong/p/6198862.html 在Java项目的实际开发和应用中,常常需要用到将对象转为String这 ...
- Java学习笔记--继承和多态(中)
1.通过继承来开发超类(superclass) 2.使用super 关键词唤起超类的构造方法 3.在超类中覆盖方法 4.区分override和overload 5.在Object类中探索toStrin ...
- Java基础12 类型转换与多态
链接地址:http://www.cnblogs.com/vamei/archive/2013/04/01/2992662.html 作者:Vamei 出处:http://www.cnblogs.com ...
- Java基础12 类型转换与多态(转载)
类型检查 Java的任意变量和引用经过类型声明(type declaration),才能使用.我们之前见过对象数据.类数据.方法参数.方法返回值以及方法内部的自动变量,它们都需要声明其类型.Java是 ...
- java中的时区转换
目录 java中的时区转换 一.时区的说明 二.时间的表示 三.时间戳 四.Date类和时间戳 五.java中的时区转换 java中的时区转换 一.时区的说明 地球表面按经线从东到西,被划成一个个区域 ...
- C#中的强制类型转换与as转换的区别
C#中的强制类型转换 例如有ClassA与ClassB两个类创建两个类的对象进行转换 1 2 ClassA a = new ClassA(); ClassB b = new ClassB(); 如果 ...
- Python中进制转换函数的使用
Python中进制转换函数的使用 关于Python中几个进制转换的函数使用方法,做一个简单的使用方法的介绍,我们常用的进制转换函数常用的就是int()(其他进制转换到十进制).bin()(十进制转换到 ...
随机推荐
- ue4 delegate event
官网相关 https://docs.unrealengine.com/latest/CHN/Programming/UnrealArchitecture/Delegates/index.html wi ...
- Unity 5 全局光照GI与新的烘焙系统初探
http://blog.csdn.net/sparrowfc/article/details/45650013 GI是啥 Realtime GI,实时全局光照,听上去就是一个非常高大上的词,但是越高大 ...
- Java基础--基本规则、语法
一.关键字.保留字.标识符.常量.变量 1.关键字:使用某种语言赋予特殊含义的单词. 2.保留字:没有赋予特殊含义,但以后可能会使用的单词. 3.标识符:自定义的单词,以数字.字母.下划线以及$符组成 ...
- beanshell解析json(从简单到复杂)
使用beanshell 解析单层Json: Json 数据如下: { "status":200, "code": 0, "message": ...
- 【手撸一个ORM】第二步、封装实体描述和实体属性描述
一.实体属性描述 [MyProperty.cs] Name,属性名称 PropertyInfo,反射获取的属性信息,后面很多地方需要通过该属性获取对应的实体类型,或调用SetValue进行赋值 Fie ...
- win7设置管理员权限
1.在运行中输入:secpol.msc 2.修改设置权限设置 3.在账户中, 将administrator启用并设置密码 将其他用户取消管理原权限,设置为user权限
- Jmeter4.0----cookie(8)
1.说明 在脚本编写的过程中,我们常常会遇到用户登录的情况,并且将部分重要信息保存在用户的cookie中,所以,来说一下,对用户登录产生cookie的操作情况. 2.步骤 第一步:添加HTTP Coo ...
- 关于AQS——独占锁的相关方法(一)
一.序言 Lock接口是juc包下一个非常好用的锁,其方便和强大的功能让他成为synchronized的一个很好的替代品. 我们常用的一个Lock的实现类(好像也是唯一一个只实现了Lock接口的类) ...
- Funsioncharts 线图 破解
在线示例:http://jsfiddle.net/henley/xnozyLa8/2/ 下载:http://files.cnblogs.com/files/ycdx2001/chart.zip
- 省厅报件7.0 读取mdb 生成xml 文件
using System;using System.Collections.Generic;using System.Data;using System.Data.OleDb;using System ...