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模块,要变的就是他的方 ...
随机推荐
- 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_16-CMS前端工程创建-导入系统管理前端工程
提供了基于脚手架封装好的前端工程 H:\BaiDu\黑马传智JavaEE57期 2019最新基础+就业+在职加薪\阶段5 3.微服务项目[学成在线]·\day02 CMS前端开发\资料\xc-ui-p ...
- jackson将json数组转成List、普通数组。
package com.mkyong; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jacks ...
- mysql一条语句实现插入或更新的操作
,),(,) ON DUPLICATE KEY UPDATE c=VALUES(c); 或者 INSERT INTO table (id,a,b,c) select id,a,b,c from xxx ...
- ubuntu 18.04设置开机自动挂载移动硬盘
首先在命令行执行df -h指令,可以看到如下结果: zifeiy@zifeiy-PC1:~$ df -h 文件系统 容量 已用 可用 已用% 挂载点 udev 964M 0 964M 0% /dev ...
- Redfish技术介绍
1.1 概述 Redfish是一种基于HTTPs服务的管理标准,利用RESTful接口实现设备管理.每个HTTPs操作都以UTF-8编码的JSON格式(JSON是一种key-value对的数据格式) ...
- 【编程开发】 C与C++中的关于函数指针的强制类型转换与指针函数的关系
[编程开发] C与C++中的关于函数指针的强制类型转换与指针函数的关系 标签: [编程开发] [VS开发] 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 以 ...
- 在图中寻找最短路径-----深度优先算法C++实现
求从图中的任意一点(起点)到另一点(终点)的最短路径,最短距离: 图中有数字的点表示为图中的不同海拔的高地,不能通过:没有数字的点表示海拔为0,为平地可以通过: 这个是典型的求图中两点的最短路径:本例 ...
- *#【Python】【基础知识】【模块】【random】【使用random创造一个随机数】
Random介绍: 输出随机数. 快照: #!/usr/bin/python # -*- coding: UTF-8 -*- import random #生成 10 到 20 之间的随机数 prin ...
- 在springMVC框架中集成quartz作业调度器
1.首先需要导入这几个jar包,如下图: 其中log4j,quartz,slf4j-api,slf4j-log4j12我是在项目中都引用了 2.引用完jar包后,新建一个作业调度类,执行作业调度逻辑, ...
- Eureka【启用https】
上一篇主要说的是开启http basic认证,从安全角度来讲,基于base64编码,容易被抓包后破解,在公网中很不安全,本文详谈如何在eureka server和eureka client中开启htt ...