C#面向对象(抽象类、接口、构造函数、重载、静态方法和静态成员)
1、抽象类
抽象类关键词 abstract (抽象) override (重写)
在父集中用 abstract 表示抽象类,抽象方法,在子集中用 override 改写
抽象类就是出来当亲爹的,只为继承而出现,不能被实例化成对象,一般抽象类中只放置抽象方法,只规定了返回类型和参数,不定义具体的内容
抽象类可以包含抽象方法和普通方法,抽象方法一定在抽象类中,抽象类中不一定只有抽象方法 , 如果要调用抽象类中的普通方法,那么需要子类继承之后实
化再调用,当一个类继承于抽象类,那么这个派生类必须实现所有的的基类抽象方法。
sealed 和 abstract 关键字不能同时出现
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#面向对象(抽象类、接口、构造函数、重载、静态方法和静态成员)的更多相关文章
- 【学习笔记】--- 老男孩学Python,day18 面向对象------抽象类(接口类), 多态, 封装
抽象类,接口类 Python没有接口这个概念 抽象类(接口类): 目的是制定一个规范 要学会归一化设计,有重复的东西就要想把它们合并起来 from abc import ABCMeta, abstra ...
- python面向对象 : 抽象类(接口类),多态,封装(私有制封装)
一. 抽象类(接口类) 与java一样, python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类, 它的特殊之处在于只能被继承, 不能被实例化. 从设计角度去看, 如果类是从现实对 ...
- php面向对象 封装继承多态 接口、重载、抽象类、最终类总结
1.面向对象 封装继承多态 接口.重载.抽象类.最终类 面向对象 封装继承多态 首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...
- Java学习笔记(六):面向对象、接口和抽象类
类和对象 Java是一门面向对象的语言,下面我们来了解一下Java中的面向对象. 方法和重载 Java中的方法格式如下: 访问修饰符 返回值类型 方法名(参数){ 方法主体 } Java的方法支持重载 ...
- 【Java基础】【09面向对象_多态&抽象类&接口】
09.01_面向对象(多态的概述及其代码体现) A:多态(polymorphic)概述 事物存在的多种形态 B:多态前提 a:要有继承关系. b:要有方法重写. c:要有父类引用指向子类对象. C:案 ...
- [Java学习]面向对象-抽象类;接口
抽象类 语法 public abstract class A{ } 定义 抽象类无法实例化.但抽象类有构造方法,在子类创建对象时用. 抽象类中可以定义抽象方法public abstract void ...
- 面向对象 继承 抽象类 接口 static 权限修饰符
Day01 面向对象 继承 抽象类 接口 static 1.匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. 2.类的继承是指在一个现有类的基础上去构建一个新的类,构建出 ...
- java面向对象--抽象类和接口
如果某个父类只知道其子类应该包含哪些方法,但无法知道如何实现这些方法,同时要使用多态的特性,怎么办? 抽象方法:关键字abstract允许在一个类中创建一个或多个没有方法体的方法--只提供方法签名,但 ...
- Python面向对象之接口类(抽象类)
Python面向对象之接口类(抽象类):就是制定一个规范. 比如定义了一个接口类(抽象类)(他们是不可以进行实例化的,这就是他为什么是制定一个规范的原因). 他的定义是需要abc模块,要变的就是他的方 ...
随机推荐
- mfc判断当前程序是否正在运行
HANDLE hMutex = CreateMutex(NULL,TRUE,_T("appName")); if(hMutex) { if(ERROR_ALREADY_EXISTS ...
- centos7用yum安装node.js v8.x
1.更新node.js v8.x yum源 // 不更新,提示没有 packages文件 # curl --silent --location https://rpm.nodesource.com/s ...
- lexicalized Parsing
$q$(S $\rightarrow$ NP VP) * $q$(NP $\rightarrow$ NNP) * $q$(VP $\rightarrow$ VB NP) * $q$(NP $\righ ...
- 关于Python Web框架——Tornado
关于Tornado的入门看这篇文章,写的非常好: https://zhuanlan.zhihu.com/p/37382503 Tornado 是一个Python web框架和异步网络库,使用非阻塞网络 ...
- 解决升Win10系统后VMware虚拟机不能联网的问题
刚升级到Win10系统,打开虚拟机发现不能联网,其实是系统服务项里缺少两个用到的服务,不能联网了,下面教大家解决联网问题. 1.打开VMware虚拟机主页,点击“编辑——虚拟网络编辑器”. 2.点击左 ...
- Union All 使用注意事项和字段顺序不一致导致的异常
使用注意,先说结果: UNION 操作符用于合并两个或多个 SELECT 语句的结果集,这里需要注意的是: UNION 内部的 SELECT 语句必须拥有相同数量的列: 列也必须拥有相似的数据类型(实 ...
- jstl标签设置通用web项目根路径-备查
在做项目时(如SSH或SpringMVC),通常需要在很多页面(jsp中的form提交)或者js代码(一般Ajax提交)中用到当前web应用的根路径(拼成访问资源如action/controller. ...
- powerDesigner的建表语句默认设置为去掉双引号
powerDesigner的建表语句默认设置为去掉双引号,依次执行如下操作: Database ------>> Edit Current DBMS ------>> Scri ...
- 报错Could not find resource cn/smbms/dao/provider/ProviderMapper.xml
原因:由于idea不会编译src下的java目录下的xml文件,所以找不到xml文件 方案一:在pom.xml中添加如下内容 <build> <resources> <r ...
- jQuery报错:Uncaught TypeError: _this.attr is not a function
问题:想通过延时把置灰的按钮再次复原,代码如下: $("#sendEmailCode").on("click", function() { var _this ...