代码实现接口抽象类
来源:互联网 发布:彩票源码程序 编辑:程序博客网 时间:2024/04/28 11:43
新建项目-〉VISUALC#-〉Windows-〉空项目
下面的写法应该是很不科学
这里我们只是为了便于理解
using System;
using System.Collections.Generic;
using System.Text;
namespace Project1
{
class Head_First
{
public abstract class Duck
{
protected FlyBehavior flyBehavior;
protected QuackBehavior quackBehavior; //接口定义的两个变量
public Duck()
{
}
public abstract void display(); //抽象方法,继承里面必须用override重写
public void performFly() //两个方法
{
flyBehavior.fly();
}
public void performQuack()
{
quackBehavior.quack();
}
public void setFlyBehavior(FlyBehavior fb) //在鸭子子类中通
//过“设定方法(setter method)”来设定鸭子的行为,而不是在鸭子的构造器内实例化
{
flyBehavior = fb;
}
public void swim()
{
Console.WriteLine("All ducks float, even decoys!");
}
}
public interface FlyBehavior //接口
{
void fly();
}
public class FlyWithWings : FlyBehavior //继承接口
{
public void fly()
{
Console.WriteLine("I'm flying!");
}
}
public class FlyNoWay : FlyBehavior
{
public void fly()
{
Console.WriteLine("I'm not flying!");
}
}
public class FlyRocketPowered : FlyBehavior //定义新的方法
{
public void fly()
{
Console.WriteLine("I'm flying with a rocket");
}
}
public interface QuackBehavior
{
void quack();
}
public class Quack : QuackBehavior
{
public void quack()
{
Console.WriteLine("Quack");
}
}
public class MuteQuack : QuackBehavior
{
public void quack()
{
Console.WriteLine("<<Silence>>");
}
}
public class Squeak : QuackBehavior
{
public void quack()
{
Console.WriteLine("Squeak");
}
}
public class MallardDuck : Duck
{
public MallardDuck()
{
quackBehavior = new Quack(); //用类实现接口
flyBehavior = new FlyWithWings();
}
public override void display()
{
Console.WriteLine("I'm real Mallard duck");
}
}
public class ModelDuck : Duck
{
public ModelDuck()
{
quackBehavior = new Quack();
flyBehavior = new FlyNoWay();
}
public override void display()
{
Console.WriteLine("I'm real Model Duck");
}
}
static void Main(string[] args)
{
// Duck mallard = new MallardDuck();
// mallard.performQuack(); //在Duck里面写好的方法,在MallardDuck用接口实现
// mallard.performFly();
// mallard.display();
// Console.ReadLine();
Duck modelduck =new ModelDuck();
modelduck.performQuack();
modelduck.performFly();
modelduck.setFlyBehavior(new FlyRocketPowered());
modelduck.performFly();
Console.ReadLine();
}
}
}
- 代码实现接口抽象类
- java接口实现与抽象类的代码详解
- ***接口/抽象类/实现类***
- 抽象类可以实现接口
- java 抽象类实现接口
- java 抽象类实现接口
- java抽象类实现接口
- java 抽象类实现接口
- Java - 抽象类实现接口
- 抽象类----接口----继承---实现
- java中接口与实现接口,包含抽象工厂(代码)
- 从代码分析抽象类和接口
- 接口和接口实现类、接口与抽象类
- 抽象类、抽象方法、接口的区别及实现
- 接口的重实现与抽象类
- 抽象类实现接口的意义
- 抽象类,接口继承与实现关系
- java接口和抽象类特殊实现
- Create Jffs2 for Linux Kernel 2.6
- C++类中的访问控制
- 客户化开发的功能主菜单丢失的问题。
- 三步学会Java Socket编程
- Linux系统信息查看命令大全
- 代码实现接口抽象类
- 什么样的域名能卖出去并卖个好价格
- OpenMP学习之--任务划分与调度(代码示例)
- Head First C# 中文版 第九章 读写文件 page424
- 中国省份城市库SQL脚本生成
- 十年总结(二):压力指数,只要不被压垮,压力就是动力
- 看互联网行业谈自己的一点感受
- 不使用栈后序遍历二叉树
- Linux系统新手学习的11点建议