封装:
1、保证代码、数据的安全性;
2、屏蔽代码复杂性;
3、封装类型:普通代码封装成方法;方法都封装在一个类中。
using System;
namespace lesson01{
public class A { //将多个方法封装,创建了类
public void Open () {
Console.WriteLine ("打开");
}
public void Close () {
Console.WriteLine ("关闭");
}
}
class MainClass {
public static void Main ( string[] args ) {
// Console.WriteLine (“Opan”),此时代码出错,故将其封装于方法中
A a = new A () ; //将逻辑封装于方法中,外界直接调用即可,屏蔽代码复杂性
a.Open () ;
}
}
}
继承:
1、被继承类——父类/基类;继承类——子类/派生类;2、子类可以拥有父类的全部特性;
3、子类可以扩展父类功能,实现重用;
4、C#只支持单继承。
using System;
namespace lesson01{
public class Person {
public string name;
}
public class Student : Person { //继承父类——修饰符 class 子类名 :父类名
public void Gua () {
Console.WriteLine ("哎呀,挂科了");
}
}
class MainClass {
public static void Main ( string[] args ) {
Person p = new Person () ;
p.name = "张三";
Student s = new Student () ;
s.name = "李四";
s.Gua () ;
}
}
}
多态:
面向过程——分析出解决问题需要的步骤,再一步步实现。
using System;
namespace lesson01{
class MainClass {
public static void Main ( string[] args ) {
//1、打开冰箱门
//2、把大象塞进冰箱
//3、关闭冰箱门
Console.WriteLine ("打开冰箱门") ;
Console.WriteLine ("把大象塞进冰箱") ;
Console.WriteLine ("关闭冰箱门") ;
}
}
}
面向对象——把构成物体的事物分解成对象。
1、三大特性:封装、继承、多态;2、对象用于描述某个事物在解决问题过程中的行为;
3、程序更具重用性(在原类中添加功能即可)、灵活性(不用添加重复代码)、扩展性(不用大规模修改原代码)
using System;
namespace lesson01{
//创建冰箱类,通过添加字段、属性或方法,使其具有特定的行为
public class Refrigerator {
public void Open () {
Console.WriteLine ("打开冰箱门") ;
}
public void PutIn (string thing) {
Console.WriteLine ("把" + thing + "塞进冰箱") ;
}
public void Close () {
Console.WriteLine ("关闭冰箱门") ;
}
}
class MainClass {
public static void Main ( string[] args ) {
//通过组合对象的行为,解决问题
Refrigerator r = new Refrigerator () ;
r.Open () ;
r.PutIn ("大象") ;
r.Close () ;
}
}
}
面向对象五大基本原则:
单一职责原则SRP:一个对象只做好一件事,若同时处理多个事情,程序不稳定。
开放封闭原则OCP:封闭修改,开放扩展,即需求变化时通过扩展类来完成,尽量不修改类的设计。
里氏替换原则LSP:子类可以替换父类,虚拟机通过父类变量动态的找到具体的子类对象,实现多态。
依赖倒置原则DIP:高层模块调用接口,底层模块实现接口,避免底层变化影响高层。
接口隔离原则ISP:尽量不使用总接口,而是通过使用专用的小接口,防止接口复杂化。