C# 面向对象的封装、继承、多态
一、封装:
封装:把客观的事物封装成类,使用和修改方便;
作用和结构体使用方法相似,程序执行流程不同;
要点:成员变量,属性,成员方法,构造函数,成员方法的静态和非静态,命名空间,常用的访问修饰符public公共的、parvate私有的,只有类本身可以访问,internal默认的,同一个命名空间下可以访问、protected被保护的、同一个继承关系下可以访问;
重名问题:同一个作用域下不允许出现重名问题,最简答解释作用域就是一个花括号内,而每一个循环是不同的花括号的情况下重名是没有关系的;
1、*****成员变量最基本的“经纪人”
class student //新建类
{
private string _name; //成员变量
public string name //属性
{
get { return _name; } //return的作用就是扔给外面一个值。
//如果只有get,就只往外输出固定的值;
set { _name = value; } //如果执行语句 student.name = "abcde"; 那么这里value的值就是"abcde";
//value的作用就是从外面赋予成员变量值。
}
2、*****成员变量可以有多个“经纪人”,而且数据类型可以不一致
private bool _sex;
public bool sex
{
get{ return _sex; }
set{ _sex = value; }
}
public string sexabc
{
get { return "abcd"+ _sex; } //如果执行语句 student.name = "abcde"; 那么这里value的值就是"请输入false";
//如果执行语句 student.name = "false"; 那么这里value的值就是"abcdfalse";
set {
if(value == "false")
_sex = value;
else
_sex = "请输入false";
}
}
3、*****构造函数
class student
{
public student() { } //创建构造函数就是执行了这一步;默认不被写出来,但是真实存在;
}
student s = new student(); //这个过程叫实例化的过程;而student()这个方法就是一个构造函数;
总结:重建对象的过程就是将类实例化的过程;
实例化的过程就是执行构造函数的过程;
构造函数是在创建完类之后形成的;
4、*****成员方法
private string _name;
public string name
{
get { return _name; }
set { value = _name; }
}
public string say() //新建一个方法
{
return "啦啦啦"+_name;
}
student s = new student();
s.name = "abcd";
string str = s.say();
Console.Write(s.str); //输出的是say这个方法返回的值,此时是 啦啦啦abcd;
总结:在构造函数内可以给private赋值;如果在外面重新赋值那么就会覆盖构造函数内给private赋的值,输出新的,如果没有赋值,那么默认输出构造函数内赋予的值;
5、*****静态方法
含有static关键字的就是静态方法;
实例化的静态无法使用静态的方法;
静态的方法属于类本身,要用类名点出来;public static int abc(){} 赋值方法是:student.abc(); student就是类名;
5、*****命名空间或者程序集
namespace;
需要引用using 空间名;
二、继承
public class fly //父类,这是个类名;
{
}
public string brid:fly //子类,类名;可以继承父级的公共用的属性;
{
}
public string little brid:brid //孙子类,类名;可以继承祖父类、父类的公共用的属性;
{
}
1、 父类、基类;
2、子类、派生类;
3、父类可以有无数个后辈类;
4、一个子类只能有一个父类;
三、多态
public class brid
{
public virtual string eat()
{ return "aaaaa"; }
}
public class little brid:brid
{
public override string eat()
{ return "abcdefg"; }
}
1、方法名一样是可以的,会以重载的方式显示,参数不同;
2、virtual 虚拟的,override重写,voerload重载;
3、*****抽象类 / 抽象方法:
abstract class fly
{
public abstract string eat();
}
class brid :fly
{
public override string eat()
{ return "aaaaaa"; }
}
抽象方法必须放在抽象类里;
抽象类无法被实例化;
抽象类里如果有抽象方法,所有继承过次抽象类的后辈类,必需要return一个值;
抽象类不只有抽象方法;
抽象类只能当做父级使用;
abstarct 关键字;
4、*****接口
interface fly
{
string flying();
}
关键字interface;
接口不能有实质性的方法;
无法被实例化;
不需要访问修饰符,默认public;
只能被继承;
所有接口方法必须全部被继承实现;否则报错;
C# 面向对象的封装、继承、多态的更多相关文章
- java面向对象(封装-继承-多态)
框架图 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程强调的是功能行为 面向对象将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向对象的特点 ...
- C# 面向对象基础&封装&继承&多态&加深一下冒泡排序写法
(一)面向对象是什么? 面向对象是一种编程思想 (二)为什么要用面向对象? 1.结构清晰 2.易于维护 3.方便扩展 (三)new一个对象是什么过程? 实例化构造函数创建对象的过程就是将类实例化的过程 ...
- objective-c自学总结(三)---面向对象的封装,继承与多态
面向对象的三大特性 封装 继承 多态 1.封装: 隐藏属性,方法或实现细节的过程称为封装 信息隐藏,隐藏对象的实现细节,不允许用户看到 将东西包装在一 然后以新的完整形式呈现出来 例如,两种或多种化学 ...
- php面向对象 封装继承多态 接口、重载、抽象类、最终类总结
1.面向对象 封装继承多态 接口.重载.抽象类.最终类 面向对象 封装继承多态 首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...
- Java基础——面向对象(封装——继承——多态 )
对象 对象: 是类的实例(实现世界中 真 实存在的一切事物 可以称为对象) 类: 类是对象的抽象描述 步骤: 1.定义一个类 (用于 描述人:) ( * 人:有特征和行为) 2.根据类 创建对象 -- ...
- Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)
Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态) 1.面向对象的三大特性: (1)继承 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以 ...
- python面向对象(封装,继承,多态)
python面向对象(封装,继承,多态) 学习完本篇,你将会深入掌握 如何封装一个优雅的借口 python是如何实现继承 python的多态 封装 含义: 1.把对象的属性和方法结合成一个独立的单位, ...
- Python面向对象04 /封装、多态、鸭子类型、类的约束、super
Python面向对象04 /封装.多态.鸭子类型.类的约束.super 目录 Python面向对象04 /封装.多态.鸭子类型.类的约束.super 1. 封装 2. 多态 3. 鸭子类型 4. 类的 ...
- 浅谈学习C++时用到的【封装继承多态】三个概念
封装继承多态这三个概念不是C++特有的,而是所有OOP具有的特性. 由于C++语言支持这三个特性,所以学习C++时不可避免的要理解这些概念. 而在大部分C++教材中这些概念是作为铺垫,接下来就花大部分 ...
- Java三大特性(封装,继承,多态)
Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...
随机推荐
- .Net版本依赖之坑引发的搜查
前言 今天上午,一个客户反馈XX消息没有推送到第三方链接.于是我查看了推送日志列表,并没有今天的.接着登录服务器查询文件日志,看到了记录.我们的代码步骤是消息先推送到消息队列,消费消息队列时,记录文件 ...
- ABP+AdminLTE+Bootstrap Table权限管理系统第十一节--Bootstrap Table用户管理列表以及Module Zero之用户管理
返回总目录:ABP+AdminLTE+Bootstrap Table权限管理系统一期 用户实体 用户实体代表应用的一个用户,它派生自AbpUser类,如下所示: public class User : ...
- 定时备份windows机器上的文件到linux服务器上的操作梳理(rsync)
由于需要对网络设备做备份,备份文件是放到windows机器上的.现在需要将备份数据同步到linux备份机器上,想到的方案有三种: 1)将windows的备份目录共享出来,然后在linux服务器上进行挂 ...
- 牛客OI赛制测试赛-序列-模拟
哇这道题好坑啊,可能是我太菜了 题意就是叫把一个连续序列分成K组,使得每个组的和都相等 我最开始的想法是由于要分成K组,那我们知道,每组一定有sum(a[i])/k这样我们只需要每次当num==sum ...
- 如何用chrome查看post get及返回的数据
chrome浏览器按下F12打开开发者工具 点击Network,找到过滤器 筛选XHR,Method那一列会显示POST GET:
- Scrum Meeting 6
第六次会议 由于之前队员一直在做数据库和编译大作业,课业压力较大,所以软工进度往后拖了好多. No_00:工作情况 No_01:任务说明 待完成 已完成 No_10:燃尽图 N ...
- 使用Java+Kotlin双语言的LeetCode刷题之路(三)
BasedLeetCode LeetCode learning records based on Java,Kotlin,Python...Github 地址 序号对应 LeetCode 中题目序号 ...
- Notepad++找回Plugin Manager{在v7.50后(包括7.50)不带有插件管理器(Plugin Manager)}
https://github.com/notepad-plus-plus/notepad-plus-plus/issues/2459 64 bit Plugin Manager is now avai ...
- WIN10 Samba(SMB) v1 trouble shooting
现象:WIN10 Education Editon不能访问SMB V1.5的NAS服务器的共享文件夹. 一篇WIN与SMB相关的经验帖:https://jingyan.baidu.com/articl ...
- Setting Tomcat Heap Size (JVM Heap) in Eclipse
this article picked from:http://viralpatel.net/blogs/setting-tomcat-heap-size-jvm-heap-eclipse/ Rece ...