1、抽象类

    抽象类关键词   abstract   (抽象)  override    (重写)

在父集中用   abstract 表示抽象类,抽象方法,在子集中用  override 改写

  抽象类就是出来当亲爹的,只为继承而出现,不能被实例化成对象,一般抽象类中只放置抽象方法,只规定了返回类型和参数,不定义具体的内容

抽象类可以包含抽象方法普通方法,抽象方法一定在抽象类中,抽象类中不一定只有抽象方法 , 如果要调用抽象类中的普通方法,那么需要子类继承之后实

化再调用,当一个类继承于抽象类,那么这个派生类必须实现所有的的基类抽象方法。

  sealedabstract 关键字不能同时出现

namespace ConsoleApplication1
{
public abstract class Ren
{
public abstract string ChiFan();
}
}
//=========================================
namespace ConsoleApplication1
{
public class Woman : Ren
{
public override string ChiFan() //子类,父类 方法名称要一样,父类中抽象方法子类中必须要重写
{
return "细嚼慢咽";
}
}
}
//======================================
namespace ConsoleApplication1
{
public class Man : Ren
{
public override string ChiFan()
{
return "大口吃饭";
}
}
}

2、接口

关键词  interface 

可以将程序拆分成多个模块,定义子类必须实现的功能

它就是出来当干爹的,不能被实例化成对象,接口里面不能有实际的方法

类:一定用 public 修饰符, 用 interface 代替类个关键字 class 

方法:不能包含普通方法,不用 public, 直接【 数据类型 函数名 ();  

子类:不需要override关键字,

:父集中的方法都有重写

案例

namespace ConsoleApplication1
{
public interface YuLe
{
string AiHao();
}
}
———————————————— namespace ConsoleApplication1
{
public interface GongZuo
{
string JiNeng();
}
}
———————————————— namespace ConsoleApplication1
{
public class Man : Ren, GongZuo, YuLe
{
public override string ChiFan()
{
return "大口吃饭";
} public string JiNeng()
{
return "敲代码";
} public string AiHao()
{
return "打游戏";
} }
}

—— 子类、父类 方法名一致

—— 父类中的方法子类中都要重写

3、构造函数

构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象(为对象成员变量赋初始值),

每一个类都有构造函数,类实例化的过程就是执行构造函数的过程,一个类可以有多个构造函数 ,

构造函数一定不能是静态的

public class Test1
{
public Test1() // 什么都没有的一般默认隐藏, public 方法名 (没有数据类型)
  { // 方法名与类名一致,text1() 括号中可以有参数 }
} text1 t = new text1( ); //new text1( ); 实例化过程

4、重载

关键词 overload

构造函数的方法名一样,参数个数不同,或参数类型不同

public  class  text2
{
public text2 ( string a , string b )
{
return a + b ;
}
public text2 ( int a , int b )
{
return a + b ;
}
}

5、静态方法和静态成员

关键词 static

静态方法是属于类的,不属于类下面的对象。

直接用: 类名 . 静态方法

public  class  text3
{
public static string haha ( )
{
return "哈哈哈";
}
} text3.haha ( ); //调用,直接通过类名点出

非静态方法

         需要实例化对象

  成员都是属于对象的,用对象调用

静态方法 

         不需要实例化对象

静态成员是属于类的,用类名调用

     

注: 静态方法里面不能包含普通成员

普通方法里面可以包含静态成员

用处

为了简便,连接数据库的时候,造连接对象类,使用静态属性直接返回连接对象。

    两个类之间传递信息

不允许创建对象的类(对创建对象的个数有限制)

C#面向对象(抽象类、接口、构造函数、重载、静态方法和静态成员)的更多相关文章

  1. 【学习笔记】--- 老男孩学Python,day18 面向对象------抽象类(接口类), 多态, 封装

    抽象类,接口类 Python没有接口这个概念 抽象类(接口类): 目的是制定一个规范 要学会归一化设计,有重复的东西就要想把它们合并起来 from abc import ABCMeta, abstra ...

  2. python面向对象 : 抽象类(接口类),多态,封装(私有制封装)

    一. 抽象类(接口类) 与java一样, python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类, 它的特殊之处在于只能被继承, 不能被实例化. 从设计角度去看, 如果类是从现实对 ...

  3. php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

    1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...

  4. Java学习笔记(六):面向对象、接口和抽象类

    类和对象 Java是一门面向对象的语言,下面我们来了解一下Java中的面向对象. 方法和重载 Java中的方法格式如下: 访问修饰符 返回值类型 方法名(参数){ 方法主体 } Java的方法支持重载 ...

  5. 【Java基础】【09面向对象_多态&抽象类&接口】

    09.01_面向对象(多态的概述及其代码体现) A:多态(polymorphic)概述 事物存在的多种形态 B:多态前提 a:要有继承关系. b:要有方法重写. c:要有父类引用指向子类对象. C:案 ...

  6. [Java学习]面向对象-抽象类;接口

    抽象类 语法 public abstract class A{ } 定义 抽象类无法实例化.但抽象类有构造方法,在子类创建对象时用. 抽象类中可以定义抽象方法public abstract void ...

  7. 面向对象 继承 抽象类 接口 static 权限修饰符

    Day01 面向对象 继承 抽象类 接口 static 1.匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. 2.类的继承是指在一个现有类的基础上去构建一个新的类,构建出 ...

  8. java面向对象--抽象类和接口

    如果某个父类只知道其子类应该包含哪些方法,但无法知道如何实现这些方法,同时要使用多态的特性,怎么办? 抽象方法:关键字abstract允许在一个类中创建一个或多个没有方法体的方法--只提供方法签名,但 ...

  9. Python面向对象之接口类(抽象类)

    Python面向对象之接口类(抽象类):就是制定一个规范. 比如定义了一个接口类(抽象类)(他们是不可以进行实例化的,这就是他为什么是制定一个规范的原因). 他的定义是需要abc模块,要变的就是他的方 ...

随机推荐

  1. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_16-CMS前端工程创建-导入系统管理前端工程

    提供了基于脚手架封装好的前端工程 H:\BaiDu\黑马传智JavaEE57期 2019最新基础+就业+在职加薪\阶段5 3.微服务项目[学成在线]·\day02 CMS前端开发\资料\xc-ui-p ...

  2. jackson将json数组转成List、普通数组。

    package com.mkyong; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jacks ...

  3. mysql一条语句实现插入或更新的操作

    ,),(,) ON DUPLICATE KEY UPDATE c=VALUES(c); 或者 INSERT INTO table (id,a,b,c) select id,a,b,c from xxx ...

  4. ubuntu 18.04设置开机自动挂载移动硬盘

    首先在命令行执行df -h指令,可以看到如下结果: zifeiy@zifeiy-PC1:~$ df -h 文件系统 容量 已用 可用 已用% 挂载点 udev 964M 0 964M 0% /dev ...

  5. Redfish技术介绍

    1.1  概述 Redfish是一种基于HTTPs服务的管理标准,利用RESTful接口实现设备管理.每个HTTPs操作都以UTF-8编码的JSON格式(JSON是一种key-value对的数据格式) ...

  6. 【编程开发】 C与C++中的关于函数指针的强制类型转换与指针函数的关系

    [编程开发] C与C++中的关于函数指针的强制类型转换与指针函数的关系 标签: [编程开发] [VS开发] 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 以 ...

  7. 在图中寻找最短路径-----深度优先算法C++实现

    求从图中的任意一点(起点)到另一点(终点)的最短路径,最短距离: 图中有数字的点表示为图中的不同海拔的高地,不能通过:没有数字的点表示海拔为0,为平地可以通过: 这个是典型的求图中两点的最短路径:本例 ...

  8. *#【Python】【基础知识】【模块】【random】【使用random创造一个随机数】

    Random介绍: 输出随机数. 快照: #!/usr/bin/python # -*- coding: UTF-8 -*- import random #生成 10 到 20 之间的随机数 prin ...

  9. 在springMVC框架中集成quartz作业调度器

    1.首先需要导入这几个jar包,如下图: 其中log4j,quartz,slf4j-api,slf4j-log4j12我是在项目中都引用了 2.引用完jar包后,新建一个作业调度类,执行作业调度逻辑, ...

  10. Eureka【启用https】

    上一篇主要说的是开启http basic认证,从安全角度来讲,基于base64编码,容易被抓包后破解,在公网中很不安全,本文详谈如何在eureka server和eureka client中开启htt ...