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前端开发_05-vuejs研究-vuejs基础-v-text指令

    把js移到body 的下面 网速改慢一点 通过模拟网速慢的情况.刷新页面的时候会有闪烁的效果 速度快的情况下也会闪烁 ,只不过是不明显. 2.解决插值表达式闪烁问题,使用v-text v-text可以 ...

  2. delphi type

    声明: 1. type Name = Existing type; 2. type Name = type Existing type; 3. type Name = (EnumValue1 [=va ...

  3. 使用super函数----增量重写普通方法和构造方法

    使用super函数----增量重写普通方法和构造方法 在子类中如果重写了超类的方法,通常需要在子类方法中调用超类的同名方法,也就是说,重写超类的方法,实际上应该是一种增量的重写方式,子类方法会在超类的 ...

  4. 【leetcode_easy】543. Diameter of Binary Tree

    problem 543. Diameter of Binary Tree 题意: 转换一种角度来看,是不是其实就是根结点1的左右两个子树的深度之和呢.那么我们只要对每一个结点求出其左右子树深度之和,这 ...

  5. 阅读随笔 Spring、Mybatis

    一.<Spring+Mybatis 企业应用实战>(第2版本) 本书讲解了Spring.Mybatis及Spring+MyBatis 工作中的常用方法,没有太深入的原理性讲解,介绍 “如何 ...

  6. 【Qt开发】Qt5 中对 C++11 一些新特性的封装

    C++11 是现在的 C++ 标准的名称,C++11 为 C++ 语言带来很多新特性. 而 Qt 4.8 是 Qt 首个在其 API 中开始使用一些新的 C++11 特性的版本,我之前写过一篇博文:C ...

  7. 最新 前程无忧java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.前程无忧等10家互联网公司的校招Offer,因为某些自身原因最终选择了前程无忧.6.7月主要是做系统复习.项目复盘.Leet ...

  8. Vue的作用域插槽

    一.通常情况下都是父组件传递数据给子组件进行展示的(无法改变子组件的展示方式):而作用域插槽允许子组件通过slot向父组件传递数据,类似React中的“以函数为子组件”,由父组件决定渲染的内容(包含绑 ...

  9. 如何下载spring sts

    1.打开https://spring.io/ 2.翻到页面最底部点击tools 3.页面下滑点击Download STS4 Windows 64-bit

  10. redis同步到磁盘