/// <summary> /// 抽象类不能被直接实例化 /// is a /// </summary> public abstract class BasePhone { public void Show() { Console.WriteLine(""); } public int Price { get; set; } /// <summary> /// 品牌 /// </summary> /// <returns></returns> public abstract string Brand(); /// <summary> /// 系统 /// </summary> /// <returns></returns> public abstract string System(); /// <summary> /// 打电话 /// </summary> public abstract void Call(); /// <summary> /// 拍照 /// </summary> public abstract void Photo();
2.基本接口作为约束
/// <summary> /// can do /// </summary> public interface IExtend { void ApplePay(); } public interface INet { void Online(); }
接口
3.各个手机的实现
/// <summary> /// 手机 /// </summary> public class iPhone : BasePhone, IExtend, INet { /// <summary> /// 品牌 /// </summary> /// <returns></returns> public override string Brand() { return "iPhone"; } /// <summary> /// 系统 /// </summary> /// <returns></returns> public override string System() { return "IOS"; } /// <summary> /// 打电话 /// </summary> public override void Call() { Console.WriteLine("User{0} {1} {2} Call", this.GetType().Name, this.Brand(), this.System()); } /// <summary> /// 拍照 /// </summary> public override void Photo() { Console.WriteLine("User{0} {1} {2} Call", this.GetType().Name, this.Brand(), this.System()); } public void ApplePay() { Console.WriteLine("User{0} {1} {2} ApplePay", this.GetType().Name, this.Brand(), this.System()); } public void Online() { Console.WriteLine("User{0} {1} {2} Online", this.GetType().Name, this.Brand(), this.System()); } }
iPhone
/// <summary> /// 手机 /// </summary> public class Lumia : BasePhone { /// <summary> /// 品牌 /// </summary> /// <returns></returns> public override string Brand() { return "Nokia"; } /// <summary> /// 系统 /// </summary> /// <returns></returns> public override string System() { return "Winphone"; } /// <summary> /// 打电话 /// </summary> public override void Call() { Console.WriteLine("User{0} {1} {2} Call", this.GetType().Name, this.Brand(), this.System()); } /// <summary> /// 拍照 /// </summary> public override void Photo() { Console.WriteLine("User{0} {1} {2} Call", this.GetType().Name, this.Brand(), this.System()); } }
Lumia
public class Mi : BasePhone { /// <summary> /// 品牌 /// </summary> /// <returns></returns> public override string Brand() { return "XiaoMi"; } /// <summary> /// 系统 /// </summary> /// <returns></returns> public override string System() { return "Android"; } /// <summary> /// 打电话 /// </summary> public override void Call() { Console.WriteLine("User{0} {1} {2} Call", this.GetType().Name, this.Brand(), this.System()); } /// <summary> /// 拍照 /// </summary> public override void Photo() { Console.WriteLine("User{0} {1} {2} Photo", this.GetType().Name, this.Brand(), this.System()); } }
Mi
abstract用override写,接口直接实现.
abstract的更多相关文章
-
abstract与interface之房祖名张默版
最近把java基础知识拿出来看看,看到abstract与interface的时候,觉得有点模糊,好像面试官也喜欢问这个问题.我在百度了查了好长时间,觉得讲算比较清楚的是那篇讲 Door,然后想要带个报 ...
-
[Erlang 0111] Erlang Abstract Format , Part 2
上回书,我们说到飞天玉虎蒋伯芳来到蜈蚣岭,不是,重来,上回咱们说到可以在Erlang Shell里面手工构造,加载并调用一个模块.在那个demo里面,我把多个Form单独生成出来,最后放在一起做 ...
-
[Erlang 0110] Erlang Abstract Format , Part 1
Erlang Abstract Format并不难懂,只是枯燥一点罢了,如果把Abstract Format的文档翻译出来,其实就是Erlang教科书中语法入门的部分. Erlang Abstract ...
-
C#中Abstract和Virtual的区别
c# 中 Abstract和Virtual比较容易混淆,都与继承有关,并且涉及override的使用.下面讨论一下二者的区别: 一.Virtual方法(虚方法) virtual 关键字用于在基类中修饰 ...
-
Java Abstract Class &; Interface
一. 抽象类 1. 抽象类:包含了一个抽象方法的类就是抽象类 2. 抽象方法:声明而未被实现的方法,用关键字abstract声明 3. 抽象类被子类继承,子类(如果不是抽象类)必须重写(overrid ...
-
java关键字extends(继承)、Supe(父类引用空间)、 This(方法调用者对象)、Instanceof(实例类型-判断对象是否属于某个类)、final(最终)、abstract(抽象) 、interface(接口)0
java 继承使用关键字extends 继承的作用:减少代码量,优化代码 继承的使用注意点: 1子类不能继承父类的私有变量 2.子类不能继承父类的构造方法 3.子类在调用自己的构造方法时 会默认调 ...
-
abstract与interface的区别
abstract的用法: //通过abstract 关键字修饰的类叫抽象类. abstract class Animal { String name; String color; abstract p ...
-
Delphi之静态方法,虚方法virtual,动态dynamic,抽象abstract,消息
Delphi之静态方法,虚方法virtual,动态dynamic,抽象abstract,消息 http://www.cnblogs.com/zhwx/archive/2012/08/28/266055 ...
-
c#中abstract与virtua、overridel的用法
1.abstract 抽象方法 ,virtual 虚方法 ,override 重载函数 父类A.m() 子类B.m() abstract的方法父类可以不实现,让子类去重写(重写=overwrite ...
-
一张图看懂normal,static,sealed,abstract 的 区别
+-------------------------+---+--------+--------+--------+----------+ | Class Type | | normal | stat ...
随机推荐
-
如何在asp.net中使用多线程及队列,异步处理一个耗时的任务(原创)
最近想在使用.net 的队列处理一些耗时的工作.经过考虑,需要先设计一个类,类中包含一个静态的队列.主要是写队列和读取队列. public class PaperCalculator { // 用于存 ...
-
django中怎样生成非HTML格式的内容。
某些时候可能有这种需求.在网页中点击一个链接或者一个button希望返回一张图片.一个pdf文档.一个csv文档等而非HTML. 在diango中非常easy做到这些.django中的view用来接收 ...
-
【前端】:Dom
前言: 昨天写了篇关于JavaScript的,今天写篇Dom的(插入4个实例),写完之后感觉知识点还不少~ 内容当然会用到[前端]:JavaScript的知识.下篇博客会写关于jQuery~~ 一.D ...
-
Hibernate_01
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
-
Hive数据倾斜解决方法总结
数据倾斜是进行大数据计算时最经常遇到的问题之一.当我们在执行HiveQL或者运行MapReduce作业时候,如果遇到一直卡在map100%,reduce99%一般就是遇到了数据倾斜的问题.数据倾斜其实 ...
-
选择排序SelectionSort
转自https://www.cnblogs.com/shen-hua/p/5424059.html a) 原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕. ...
-
python2x如何迁移代码到python3中
2to3 - 自动Python 2到3代码转换 2to3是一个Python程序,它读取Python 2.x源代码并应用一系列修复程序将其转换为有效的Python 3.x代码.标准库包含一组丰富的修复程 ...
-
Spring IoC 依赖注入的方法大全 XML配置方式
Spring 依赖注入 构造方法注入 ① 根据索引注入 <bean name="student" class="cn.bdqn.SpringDI.Student ...
-
pytorch写一个LeNet网络
我们先介绍下pytorch中的cnn网络 学过深度卷积网络的应该都非常熟悉这张demo图(LeNet): 先不管怎么训练,我们必须先构建出一个CNN网络,很快我们写了一段关于这个LeNet的代码,并进 ...
-
hdu 4857 Little Devil I
http://acm.hdu.edu.cn/showproblem.php?pid=4897 题意:给你一棵树,边的颜色要么为白色,要么为黑色,初始每条边为白色,有三种操作 1.将u-v链上面的所有边 ...