面向对象多态之接口

申明下:我也是新手,以下如有不对或不合适的地方望指出,一起交流O(∩_∩)O哈!

好了,转入正题


 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace Interface
7 {
8 class InterfaceTest
9 {
10 static void Main(string[] args)
11 {
12 #region 测试Cat,Monkey,Bear类
13 introduction test;
14 for (int i = 1; i<=3; i++)
15 {
16 switch (i)
17 {
18 case 1:
19 test = new Cat();
20 test.speak(); //亲们,我的名字test有魅力么
21 break;
22 case 2:
23 test = new Bear();
24 test.speak(); //亲们,我的名字test有魅力么
25 break;
26 case 3:
27 test = new Monkey();
28 test.speak(); //亲们,我的名字test有魅力么
29 break;
30 }
31
32 }
33 #endregion
34
35
36 #region 好了,不用多态的方式去达到上边的效果,Thinking,该如何实现
37 for (int i = 1; i <= 3; i++)
38 {
39 switch (i)
40 {
41 case 1:
42 Cat cat=new Cat();
43 cat.speak(); //亲们,我的名字好别扭o(>﹏<)o呃呃呃
44 break;
45 case 2:
46 Bear bear=new Bear();
47 bear.speak(); //亲们,我的名字好别扭o(>﹏<)o呃呃呃
48 break;
49 case 3:
50 Monkey monkey=new Monkey();
51 monkey.speak(); //亲们,我的名字好别扭o(>﹏<)o呃呃呃
52 break;
53 }
54 }
55 /* 好了,两种方式你发现了什么呢?神马,不会什么都没看出来么,想想,如果,有一天,我也一统天下,我的名字不再叫Cat,Bear和Monkey了,
56 那上面两种方式各需要做哪些改动呢?对于第二种我想说:天哪,我疯了,幸亏我只用了三次,用多了,这,哪改的完呢
57 */
58
59 /* 重要:上面的方式之所以可以用接口去调用各个继承了它的类的方法,是因为,听着:父类引用指向子类对象!!!好了,你可以说我
60 Cat test=new Cat(),Bear test=new Bear(),亲,这,在一工程中,这实际么,可能,写着写着,自己都吐了,感受到接口的魅力了么,
61 感觉到面向对象爽之处了么,所以,要面向接口化编程!
62 其实,想想,第一种方式,如果有一天类名字改变了,要改的地也蛮多,这,这,工厂,你该出来了吧。。。
63 */
64 #endregion
65 }
66 }
67 }


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

namespace Interface
{
/// <summary>
/// 假设所有的动物类都有一个自我介绍的方法,为其定义一个共同的接口(introduction:介绍)
/// </summary>
public interface introduction
{
void speak();
}
}


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

namespace Interface
{
/// <summary>
/// Cat类继承introduction接口
/// </summary>
public class Cat:introduction
{
#region introduction 成员

public void speak()
{
Console.WriteLine("我是机器猫,什么?不信,我给你变出好多吃的。。。");
}

#endregion
}
}


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

namespace Interface
{
/// <summary>
/// Bear类继承introduction接口
/// </summary>
public class Bear:introduction
{
#region introduction 成员

public void speak()
{
Console.WriteLine("知道火焰是我最好的玩具的一定知道我吧,那只可爱的小熊熊就是我啦啦。。。");
}

#endregion
}
}


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

namespace Interface
{
/// <summary>
/// Monkey类实现introduction接口
/// </summary>
public class Monkey:introduction
{
#region introduction 成员

public void speak()
{
Console.WriteLine("我是齐天大圣,记得吗,五百年前大闹天宫的就是俺老孙。。。");
}

#endregion
}
}

面向对象多态之接口,布布扣,bubuko.com

时间: 2024-08-03 19:28:18

面向对象多态之接口的相关文章

Java面向对象多态和接口

一.多态 1.通过多态可以减少类中的代码量,可以提高代码的可扩展性.继承是多态的基础,没有继承就没有多态. 2.把子类转换为父类称为向上转型,自动进行类型转换.把父类转换为子类称为向下转型,必须进行强制类型转换. 3.向上转型后通过父类引用变量调用的方法是子类覆盖或继承父类的方法,通过父类引用变量无法调用子类特有的方法. 4.向下转型后可以访问子类特有的方法.必须转换为父类指向的真实子类类型,否则将出现类型转换异常ClassCasException. 5.instancefo运算符用于判断一个对

四-面向对象 -多态、接口 is、as运算

多态:有了继承,才有了多态:概念:继承同一个父类的全部子类,使用起来都不一样,他们都是一个独立的个体: 普通父类中,可以出现虚方法,虚方法可以在子类中被重写: 虚方法:virtual重写:override 父类,基类子类,派生类,超类 namespace 多态 { class Ren { public void chifan() { Console.WriteLine("我必须得吃饭!"); } public virtual void xihuanchi() -----虚方法 { Co

06 面向对象:多态&amp;抽象类&amp;接口&amp;权限修饰符&amp;内部类

多态: /* 多态(polymorphic)概述 * 事物存在的多种形态 多态前提 * a:要有继承关系. * b:要有方法重写. * c:要有父类引用指向子类对象. * 成员变量 * 编译看左边(父类),运行看左边(父类). * 成员方法 * 编译看左边(父类),运行看右边(子类).动态绑定 * 静态方法 * 编译看左边(父类),运行看左边(父类). * (静态和类相关,算不上重写,所以,访问还是左边的) * 只有非静态的成员方法,编译看左边,运行看右边 */ class Demo_Polym

面向对象中的接口和多态

接口的作用是用来制定规范,以便让后面的程序根据这个规范来实现. 接口的声明方式:interface 接口名{},接口只能声明抽象方法,至少要有一个,但是声明的抽象方法前不需要用abstract修饰. 声明一个类实现接口,class demo implements interface_name {},当一个类实现接口的时候,这个类必须实现接口里定义的所有抽象方法.一个类可以既同时继承一个类又实现多个接口,class demo2 extends demo implements interface1,

初识JAVA(【面向对象】:pub/fri/pro/pri、封装/继承/多态、接口/抽象类、静态方法和抽象方法;泛型、垃圾回收机制、反射和RTTI)

JAVA特点: 语法简单,学习容易 功能强大,适合各种应用开发:J2SE/J2ME/J2EE 面向对象,易扩展,易维护 容错机制好,在内存不够时仍能不崩溃.不死机 强大的网络应用功能 跨平台:JVM,字节码 两个命令: javac helloworld.java:将Java文件编译为字节码的.class文件 java helloworld:运行Java程序...??暂时这么认为 数据类型: 普通数据类型:int a=3; 对象数据类型:使用关键字new,String s=new String("

Java面向对象之类、接口、多态

Java面向对象之类.接口.多态 类 class Person { // 实例属性 int age; String name; // 类属性 static int v = 1; // 构造器 public Person() {} // 构造器重载 public Person(int age, String name) { this.age = age; this.name = name; } // 实例方法 public void tell_age() { System.out.println(

09.面向对象多态的概述及其代码体现

09.01_面向对象(多态的概述及其代码体现) A:多态(polymorphic [,p?l?'m??f?k])概述 事物存在的多种形态 B:多态前提 a:要有继承关系. b:要有方法重写. c:要有父类引用指向子类对象. C:案例演示 代码体现多态 案例: class Demo1_Polymorphic { public static void main(String[] args) { Cat c = new Cat();//猫是一只猫 c.eat(); Animal a = new Cat

C#编程语言与面向对象—— 多态

多态编程的基本原理是: 使用基类或接口变量编程. 在多态编程中,基类一般都是抽象类,其中拥有一个或多个抽象方法,各个子类可以根据需要重写这些方法.或者使用接口,每个接口都规定了一个或多个抽象方法,实现接口的类根据需要实现这些方法. 因此,多态的实现分为两大基本类别:继承多态和接口多态. 继承多态 设想动物园饲养员每天需要给他所负责死样的狮子.猴子和鸽子喂食. 首先,建立三个类分别代表三个动物 饲养员用Feeder类表示.由于三种动物吃的动物一样,Feeder类必须拥有三个喂动物的公共方法: 过程

.Net学习 第3季 C#面向对象 多态

.Net 视频学习第2季 C#面向对象 面向对象 多态 概念:让一个(父类)对象表现出多种(子类)类型的特性:三种方法:虚方法/抽象类/接口 方法一:虚方法 将父类方法标记为虚方法,使用关键字virtual在返回值类型前,这个方法可以被子类重写一遍(在子类方法返回值类型前使用关键字override) 没有使用虚方法下: public class Person { private string _name; public string Name { get{return _name;} set{_