abstract
/// <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 ...
随机推荐
- some scrum screenshots
backlog tracking progress Initial Stage Next Stage End
- UOJ #142. 【UER #5】万圣节的南瓜灯 并查集
#142. [UER #5]万圣节的南瓜灯 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/142 Descrip ...
- 用C#调用Matlab图像处理自制QQ游戏2D桌球瞄准器
平时不怎么玩游戏,有时消遣就玩玩QQ里的2D桌球,但是玩的次数少,不能像骨灰级玩家一样百发百中,肿么办呢?于是某天突发奇想,决定自己也来做个“外挂”.说是外挂,其实只是一个瞄准器,毕竟外挂是修改别人的 ...
- Android_通过传感器抓小偷
package com.beyond.phonestolen; import android.hardware.Sensor; import android.hardware.SensorEvent; ...
- TransactionScope使用
public void FixProjectSorceInsert() { TransactionOptions transactionOption = new TransactionOptions( ...
- oc-05-对象的创建
// 11-[掌握]创建一个对象并访问成员变量 #import <Foundation/Foundation.h> //声明 @interface Person : NSObject//类 ...
- perl 变量详解
http://www.perlmonks.org/?node_id=933450 use strict; use Devel::Peek; my $a; Dump($a); $a=4; Dump($a ...
- Understanding Design And Development Job Titles--reference
If you’re confused about the difference between a front-end developer and a web designer, you’re not ...
- Mac 下配置Tomcat7和eclipse中配置tomcat
转载自: http://www.cnblogs.com/weilaikeji/archive/2013/05/29/3106473.html 1.下载Tomcat 从Tomcat项目主页下载相关压缩包 ...
- 炼数成金hadoop视频干货02
视频地址:http://pan.baidu.com/s/1dDEgKwD 这个视频理论性太强,不过倒是给了自己唯一的选项就是自己实践,不用像以前那样视频中敲一个字符,我也敲一个字符 讲到的内容: 介绍 ...