C#面向对象_C#面向对象开发开发整理

C#面向对象_C#面向对象开发开发整理

一.静态和实例

C#面向对象_静态和实例,静态类和实例类,静态成员和实例成员

面向对象开发的三大特性。

二.封装

1.方法封装: 方法名,方法体,参数,返回值
形参、实参概。
ref,out 基础类型参数外部同步。

属性封装: get;set 访问器使用、修饰符
构造方法
方法重载
方法重写

2.类封装
3.接口封装
4.程序集封装
5.API封装、业务封装

三.继承
对象的继承代表了一种is-a的关系,如果两个对象,A和B,可以描述为B是A,则表明B可以继承A.继承者可以理解为是被继承者的特殊化,因为他除了具备被继承者的特性外,还具备自己独有的个性,继承定义了类如何相互关联,共享特性。
继承的工作方式是定义父类和子类,或者叫基类和派生类,其中类继承父类的所有特性,子类不但继承父类的所有的特性,还能自己定义新的特点。

在C#中,一个类可以继承另一个类。如Student和Teacher类都继承Person类:

public class Student : Person {   } 
public class Teacher : Person {   }

学好继承三个注意点:
如果子类继承父类:
1.子类拥有父类非private的属性和功能
2.子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;
3.子类还可以以自己的方式实现父类的功能(方法重写)

C#中,this关键字代表当前实例,通过它可以访问类本身的成员。base关键字代表父类,可以用于访问父类的成员。例如:在子类中,调用父类的属性、方法、构造方法。

继承具有传递性,如果class A : B ;class B : C,则A也可以访问C的成员。
C#中的继承具有单根性,一个类不能够同时继承自多个父类。

继承模拟了现实世界的关系,继承实现了代码的重用,继承使得程序结构清晰,子类和父类的层次结构清晰,最终的目的是使子类只关注子类的相关行为和状态,无须关注父类的行为与状态。

protected表示继承时,子类可以对父类有完全访问权
子类从他的父中继承的成员有方法,域,属性,事件,索引器。但对于构造方法,他不能被继承,只能被调用,对于调用父类的成员,可与用base关键字。
Abstract:抽象类,只能是其他类的基类。类中的方法只声明不实现,方法的实现在他的派生类中完成。
Sealed:指定类不能被继承。

类继承:单继承
接口继承:多继承

四.多态
多态表示不同的对象可以执行相同的动作,但要通过他们自己的代码类执行
子类以父类的身份出现
子类在工作时以自己的方式来实现
子类以父类的身份出现时,子类特有的属性和方法不可以使用
虚方法和重写
为了是子类的实例完全接替来自父类的类成员,父类必须将该成员声明为虚伪的,这是通过在改成员的返回值类型之前添加virtual关键字来实现,子类可以使用override关键字,将父类实现,替换为自己实现,这就是方法的重写override。
多态的原理是当方法被调用时,无论对象是否被转换为其父类,都只有位于对像继承链最末端的方法实现会被调用,也就是说,虚方法是按照其运行时类型,而非编译时类型进行动态绑定调用的。

Virtual:用于修饰方法、属性、索引器或事件声明,并且允许在派生类中重写这些对象
Override:提供从基类继承的成员的新实现
New:作修饰符,隐藏从基类成员继承的成员,在不使用 new 修饰符的情况下隐藏成员是允许的,但会生成警告。作运算符,用于创建对象和调用构造函数。

重构
C#允许把类和方法声明为abstract,即抽象方法
注意:
抽象类不能被实例化
抽象方法是必须被子类重写的方法
如果类中包含抽象方法那么类就必须定义为抽象类,不论是否还包括其他一般方法
我们应该考虑让抽象类拥有尽可能多的共同代码,拥有尽可能少的数据。
抽象类通常代表一个抽象概念,他提供一个继承的触发点,当设计一个新的抽象类时,一定是用来继承的 ,所以在一个以继承关系形成的等级结构里,树叶节点应该是具体类,树枝节点均应该是抽象类。

接口
关键字interface
接口是把隐式公共方法和属性组合起来,以封装特定功能的集合,一旦实现了接口,类就可以支持接口所指定的所有属性和成员,声明接口和声明抽象类完全相同,但不允许提供接口中任何成员不能的执行方式,实现接口的类,就必须要实现接口的所有方法和属性。
一个类可以支持多个接口,多个类也可以支持相同的接口,接口的命名前面要加上大写字母“I”
注意:
接口用interface声明,而不是class,接口名称前面要加I,接口的方法或属性前面不能有修饰符、方法没有方法体
抽象类和接口的区别:
抽象类可以给出一些成员的实现,接口却不包含成员体的实现,抽象类的抽象成员可以被子类部分实现,接口的成员必须被实现类完全实现,一个类只能继承一个抽象类,但可以实现多个借口
类是对对象的抽象,抽象类是对类的抽象,接口是对行为的抽象
如果行为跨越不同类的对象,可使用接口;对于一些相似的类对象,用继承抽象类。

面向对象的设计原则:

单一职责原则 (The Single Responsiblity Principle,简称SRP):一个类或者一个方法,最好只做一件事,只有一个引起它的变化.
开放-封闭原则 (The Open-Close Principle,简称OCP):对于扩展是开放的,对于更改是封闭的
Liskov 替换原则(The Liskov Substitution Principle,简称LSP):子类必须能够替换其基类
依赖倒置原则(The Dependency Inversion Pricinple,简称DIP):依赖于抽象
接口隔离原则 (The Interface Segregation Principle,简称ISP):使用多个小的专门的接口,而不要使用一个大的总接口。

更多:
C# 字符串格式化_C# 字符串格式化整理
C# 字符串拼接整理_C#字符串拼接方式整理
C# 项目结构整理_.Net 项目结构整理

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值