C#语法基础19_面向对象编程_继承性(与多态初识)

C#语法基础19_面向对象编程_继承性(与多态初识)

封装性链接如下:

C#语法基础17_面向对象编程_封装性 - 摸鱼time - 博客园 (cnblogs.com)


类的继承

C#为单继承

子类(sub-class)继承父类(parent-class)

private修饰的变量不可被子类继承

protected修饰的变量只能在本类和子类中被访问

// 密封类不能被继承
public sealed class Pen {
}
// 承语语法
public class B : A { // B extends A

C#所有类继承是object类

object类有四个方法

Equals
GetHashCode
GetType
ToString

抽象类

public abstract class Employee {
}

虚拟方法(可能将在子类被重写的方法)

public virtual double GetArea() {
    return double.MinValue;
}

抽象方法(必须在子类被重写的方法)

public abstract double GetArea() {
    return double.MinValue;
}

抽象类private属性的继承

// 抽象基类(员工)
public abstract class Employee {
    private string name;
    private int employeeNumber;
    private double payrate;
    public Employee(string name, int num, double rate) {
    this.name = name;
    employeeNumber = num;
    payrate = rate;
}
    
// 子类(全职员工)
public class FullTime : Employee {
    const double WEEKS_PER_YEAR = 52.0;
    public FullTime (string name, int num, double rate)
    : base(name, num, rate){    // : base(name, num, rate)调用基类的构造方法
    }
}

调用父类方法

base.父类方法()

重写和重载

// 重写和重载
public override string ToString() {
return face.ToString();
} 

uml关系(有横向与纵向关系)

纵向关系有:依赖 < 关联 < 聚合 < 组合

依赖:人与空气,空气作为一种工具与人没有直接关系

关联:人与其朋友,可随时取消的关系

聚合:家庭中的妻子和丈夫,更为强烈的关联关系。

组合:人的器官,部分属于整体,整体不存在,部分一定不存在

uml的is-a关系与has-a关系

is-a关系,继承相关

如菱形、圆形和方形都是形状的一种

has-a关系,聚合相关

比如电脑是由显示器、CPU、硬盘等组成

多态初识

方法的重写与重载体现了多态,一个方法存在多种实现形式,以使得它被不同的对象调用时这个方法都是合适的。

posted on 2021-07-05 13:15  摸鱼time  阅读(57)  评论(0编辑  收藏  举报