面向对象编程

构造方法和析构方法


构造方法


类的构造方法

面向对象编程_第1张图片

Woman类后面的“()”;其实指的就是构造方法。

只要你想要创建类或结构的实例,必须调用它的构

造方法。

构造方法负责对类里面的字段进行初始化。


1.构造方法必须类重名;

2.构造方法没有返回值,但可以有参数;

3.构造方法可以有多个重载;

4.不带参数的构造方法称为默认构造;



面向对象编程_第2张图片

1.构造方法的本质是一个构造器,是为了类的实例化而产生;

2.构造方法是一种特殊的方法,它没有返回值,它必须与类重名,它只能在初始化的时候被系统自动执行,外部不能调用;

3.构造方法可以不显示的写,系统会默认的为你的类添加一个无参构造方法;

4.如果讲构造函数设为private,则不能被外部实例化;

5.如果类里面有带有参数的构造方法,想调默认构造时,必须把默认构造显示的写出来;


结构体的构造方法

public struct position{

    public int x;

    public int y;

//结构体的自定义构造

public position (int x , int y){

    this.x=x;

    this.y=y;

    }

}

默认构造方法不用写默认构造显示,也有默认构造。

析构方法


析构方法用于析构类的实例。

构造方法用户实例化,分配内存空间,而析构方法正好与它相反,用于释放内存空间。

一般在某个功能结束的时候,做某些事情。

class  Car

{

                        ~Car( )        // destructor 写在类名的前面

        {

                            // cleanup statements...

        }

}


1.不能在结构中定义析构方法,只能对类使用析构方法。

2.一个类只能有一个析构方法。

3.无法继承或重载析构方法。

4.无法调用析构方法。

5.它们是被自动调用的。

6.析构方法既没有修饰符,也没有参数。


面向对象

面向对象是把构成问题事务分解成各个对象,创建对象后用

对象调用各自方法以达到解决问题的目的;


面向对象特性:封装、继承、多态

OOP(面向对象编程)达到软件工程的三个主要目标:

重用性、灵活性、扩展性


封装

封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(我们称之为类)。

封装的意义在于保护或者防止代码(数据)被我们无意中破坏。

封装就是对类成员的再次包装,这样写更规范。


继承


继承用于创建可重用、扩展和修改在其他类中定义的行为的新类。 其成员被继承的类称为“基类”,继承这些成员的类称“派生类”。派生类只能有一个直接基类。 但是,继承是可传递的。 如果 ClassB 派生出 ClassC,ClassA 派生出ClassB,则 ClassC 会继承 ClassB 和 ClassA 中声明的成员。

由继承的关系我们知道,基类有的,派生类都有;

派生类有的,基类可能没有。

即:派生类可以赋值给基类,而基类不能赋值给派生类。


指定基类的方法

通过在派生的类名后面追加冒号和基类名称,可以指定基类。


面向对象编程_第3张图片

1.派生类获得基类的所有方法、字段、属性和事件。

2.继承具有传递性。

3.派生类可以赋值给基类,但是基类不能赋值给派生类。

多数情况 对象总是写在子类里面,不会再基类里创建太多东西。

派生类写构造需要把基类的内容也补充进去

例子:public classname(int a,int x,int y,long z): base ( x,y,z)//x,y,z是基类的内容。

this a=a;


里氏转换

转换原则一:子类对象可以直接赋值给父类对象。

作用:消除子类间的差异。把其类型转换为统一的数据类型,这样就可以写出一套通用的代码,这样即可以最大限度的重用代码,同时也提高了程序开发的效率;

转换原则二:父类转换成子类,这样就可以调用子类里面的公有成员了。

is as关键字


 多态


当派生类从基类继承时,它会获得基类的所有方法、字段、 属性和事件。 派生类可以选择:

 • 继承最接近的基类方法而不重写它

 • 重写基类中的虚拟成员。 

• 定义隐藏基类实现的成员的新非虚实现 

方法替换

当派生类继承基类后,可以定义隐藏基类实现的成员的新非虚实现。通常,我们称这为“方法替换”。

关键字:new


面向对象编程_第4张图片

虚函数 重写

相对比于方法替换

关键字 virtual修饰方法

override重写子类里的方法


面向对象编程_第5张图片

当采用虚方法重写后,子类方法不会再含有父类方法的特征,如果需要调用原本父类的特征,就需要一个新的关键字

base 

用法:重写时

pubic class A{

            public virtual void Aff{


            }

}



public class A:B

{

        public override void Add(){

                base.Aff();

                //声明附加的方法

        }

}

重写就是多态的表现形式

你可能感兴趣的:(面向对象编程)