一、封装:就是要让你的类有密封性,不能让外部随便修改数据。
于是就有了尽量少声明公有字段。属性可以用来对外,作为修改的入口。通过属性,可以限制字段的赋值。
二、继承:让子类可以拥有父类的对象的功能。
在实例化子类对象时,是先调用父类构造函数再调用子类构造函数。通常,作为父类的类都应尽量避免实例化,可以用abstract来修饰(只能被继承不能被实例化)。另外,密封类是只能被实例化而不能被继承。
三、多态:让父类可以拥有子类对象的功能
父类用virtual修饰的方法,在子类中都可以用override关键词来重写。