C#[抽象类,接口]
Ⅰ.抽象类
1.抽象类、抽象方法
抽象类:通常情况下,它里面有抽象方法,类前面定义了一个abstract
抽象方法:只定义了方法的名称,没有定义方法的内容
2.为什么要使用抽象类、抽象方法?
都是为了继承
3. 怎么去定义抽象类,抽象方法?
abstract +类名,abstract+方法名
4.特点:
❶.抽象类不能被实例化;
❷.抽象方法的作用是为子类提供一个统一的接口,抽象方面里面只有声明,没有实现;
❸. 一个类一旦继承了一个抽象类,就必须实现对该抽象类里面所有的抽象方法的实现;
public abstract class Person
{
public abstract void A();
public abstract void B();
}
Person
public class C :Person
{
public override void A()
{
Console.WriteLine("China"); }
public override void B()
{
Console.WriteLine("nihao");
}
public static void Main()
{
C me = new C();
me.A();
}
}
class C :Person
❹.一个抽象类里面可以有非抽象方法,但是一旦一个类里面有抽象方法,该类就为抽象类了;
❺.抽象方法在声明后用一个;结束,不需要用{};
❻.抽象方法在覆写的时候不需要声明为虚方法;
Ⅱ.接口
接口:可以看成一个更加严格意义上的抽象类,当是一个接口的时候,它里面只能是抽象方法,而不能有非抽象方法
1、怎么去定义一个接口?
Interface +类名
2、怎么去定义接口里面的方法?
eg:
void A();
也可以加上参数void A(string name);
注意:千万不能这么写,void B(){};//不能这样写,因为接口里面全部都是只定义了方法名,而没有具体的实现过程
4、特点:
❶.接口用来实现多继承,一个类只能有一个父类,但可以继承于多个接口class A :B,C
(可以是继承这个接口class Animal:Interface1,也可以继承另一一个接口class Animal:Interface1,Interface2)
❷. 接口是一种特殊的抽象类,它里面规定得更严格,里面的方法只能为抽象方法
❸.定义一个接口的时候,一般为缺省,即interface +类名,前面自动加上了public abstract,定义接口中的方法时,也只需要写返回类型 +方法名即可,因为也默认为public abstract
❹.接口里面的所有成员都是公共的
❺.一个类继承与一个接口,就必须完成该接口中所有方法的实现
❻.接口不能包含字段,构造函数,静态变量,或者常量等
5、接口用在什么地方?
接口是多继承,接口的作用相当于一个工厂要生产插座,提供一个模型,模型没有提供实现的具体方法,具体的实现过程,只是定义了一个模型。
6、为什么要使用接口?
就是为了继承,统一规范。
interface Interface1
{
//接口里面只能用抽象的方法
void A();
void B(string Name);//string Name参数可以写
}
Interface1
class Animal:Interface1
{
//一个类继承了一个接口,就要去完成接口里面所有的override,必须要override
public override void A()
{ }
public override void B()
{ }
public Animal()
{
Console.WriteLine("我是动物类!");
}
}
Animal:Interface1(继承接口)
Ⅲ.抽象类和接口有什么区别?
区别:
1.抽象类:有抽象的方法,也有非抽象的方法;
接口:是更加严格意义上的抽象方法,里面必须全部是抽象方法;
2.抽象类:抽象类里面的成员可以是私有的private,公共的public,受保护的protected;
接口:里面所有成员都是公共的public;
共:
1.一个类继承一个抽象类或者一个接口,它必须要override抽象类/接口里面的所有方法。
C#[抽象类,接口]的更多相关文章
- 速战速决 (4) - PHP: 类基础, 抽象类, 接口, trait
[源码下载] 速战速决 (4) - PHP: 类基础, 抽象类, 接口, trait 作者:webabcd 介绍速战速决 之 PHP 类基础 抽象类 接口 trait 示例1.类的相关知识点 1(基础 ...
- python 全栈开发,Day21(抽象类,接口类,多态,鸭子类型)
一.昨日复习 派生方法和派生属性 super 只有在子父类拥有同名方法的时候, 想使用子类的对象调用父类的方法时,才使用super super在类内 : super().方法名(arg1,..) 指名 ...
- python面向对象 : 抽象类(接口类),多态,封装(私有制封装)
一. 抽象类(接口类) 与java一样, python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类, 它的特殊之处在于只能被继承, 不能被实例化. 从设计角度去看, 如果类是从现实对 ...
- 【学习笔记】--- 老男孩学Python,day18 面向对象------抽象类(接口类), 多态, 封装
抽象类,接口类 Python没有接口这个概念 抽象类(接口类): 目的是制定一个规范 要学会归一化设计,有重复的东西就要想把它们合并起来 from abc import ABCMeta, abstra ...
- “全栈2019”Java第一百零六章:匿名内部类与抽象类接口注意事项
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 面向对象 继承 抽象类 接口 static 权限修饰符
Day01 面向对象 继承 抽象类 接口 static 1.匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. 2.类的继承是指在一个现有类的基础上去构建一个新的类,构建出 ...
- python day - 19 抽象类 接口类 多态 封装
一. 抽象类接口类即制定一个规范 特点: 1.不可被实例化. 2.规范子类当中必须事先某个方法. 3.在python中有原生实现抽象类的方法,但没有原生实现接口类的方法. 例题:制定一个规范就是,子类 ...
- C# 你什么让程序员寂寞成酱紫 (男生版 娱乐中学习 抽象类 接口 继承 实现方法 )
你什么让程序员寂寞成酱紫 (男生版 娱乐中学习 抽象类 接口 继承 实现方法 ) 一个家庭 相当于 一个空间,这个空间里 有 很多元素,比如 爱,爱这个抽象事物,可能有很多动作,接吻.交流,对于一 ...
- 13. 抽象类 & 接口
一.抽象类 // 抽象类Shape public abstract class Shape { // 1. 成员变量 private String color; // 2. 初始化块 { System ...
- 面向对象的理解 抽象类&接口
一.关于面向对象 1.什么是面向对象 在解释面向对象之前,先说说面向过程.学过C的同学都知道,C就是面向过程的一种语言.那什么是面向过程呢?比方说组装主机,对于面向过程,需要从0开始.买cpu ...
随机推荐
- Azure China (5) 管理Azure China Powershell
<Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China Cloud Update 2015-09-01 发现一个新的命令,在 ...
- WPF路线图白皮书: 2015及未来
介绍 当2006年微软首次推出Windows Presentation Foundation(WPF)时,它代表了应用程序的设计和开发又向前跨出了巨大的一步.它简化了GUI应用程序的开发,有助于UI和 ...
- Atitit. Api 设计 原则 ---归一化
Atitit. Api 设计 原则 ---归一化 1.1. 叫做归一化1 1.2. 归一化的实例:一切对象都可以序列化/toString 通过接口实现1 1.3. 泛文件概念.2 1.4. 游戏行业 ...
- Atitit 项目管理(5)----------后勤管理与工具链支持管理
Atitit 项目管理(5)----------后勤管理与工具链支持管理 1.1. keyword1 1.2. 15个辅助软件1 1.3. 公共模块管理(100个即可)2 1.4. 第三方类库表2 1 ...
- Atitit 控制中心快速启动面板quick launcher
Atitit 控制中心快速启动面板quick launcher contralPanel.bat aaaControlPanel.contrlx /AtiPlatf_auto/src_atibrow/ ...
- Java连接MongoDB进行增删改查
1.导入必须的包: 详情看项目:http://pan.baidu.com/s/1cvDAOY 2.通过Myeclipse创建WEB项目 3. 3.bean:创建实体类 package com.bean ...
- 最简单的可取消多选效果(以从水果篮中挑选水果为例)【jsDEMO】
[功能说明] 最简单的可取消多选效果(以从水果篮中挑选水果为例) [html代码说明] <div class="box" id="box"> < ...
- javase基础复习攻略《十》
按照计划本篇为大家总结JAVA的网络编程,什么叫网络编程呢?网络编程!=网站编程,对于这一点大家一定要注意,很多小朋友都曾经这么认为.既然谈到网络编程,咱们先了解一下网络的基础知识,什么是计算机网络? ...
- linux分享六:进程管理
1:批量杀死进程 ps -ef|grep LOCAL=NO|grep -v grep|cut -c 9-15|xargs kill -9 或kill -9 `ps -ef|grep oracle|aw ...
- 基于Metronic的Bootstrap开发框架经验总结(7)--数据的导入、导出及附件的查看处理
在很多系统模块里面,我们可能都需要进行一定的数据交换处理,也就是数据的导入或者导出操作,这样的批量处理能给系统用户更好的操作体验,也提高了用户录入数据的效率.我在较早时期的EasyUI的Web框架上, ...