面向对象方法的重载(overloading)和覆盖(overriding)。

时间:2021-03-25 17:09:18

 

在有些JAVA书籍中将overriding称为重载,overloading称为过载。

Overloading在一个类中可以定义多个同名方法,各个方法的参数表一定不同。但修饰词可能相同,返回值也可能相同。

在程序的编译过程中根据变量类型来找相应的方法。因此也有人认为 overloading是编译时的多态,以后我们还会学到运行时多态。

 

为什么会存在overloading技术呢?作为应对方法的细节。

利用类型的差异来影响对方法的调用。

吃()可以分为吃肉,吃菜,吃药,在一个类中可以定义多个吃方法。

 

构造方法也可以实现overloading。例:

public  void  teach(){};

public  void  teach(int a){};

public  void  teach(String a){}为三种不同的方法。

 

Overloading方法是从低向高转。

Byteshortfloatintlongdouble

 

在构造方法中,this表示本类的其他构造方法:

student(){};

student(string n){

  this();//表示调用student()

}

如果调用student(int a)则为this(int a)

特别注意:用this调用其他构造方法时,this必须为第一条语句,然后才是其他语句。

 

This表示当前对象。

 

Public  void  printNum(){

  Int number=40

  System.out.println(this.number);

}

此时打印的是实例变量,而非局部变量,即定义在类中而非方法中的变量。

 

This.number表示实例变量。

谁调用this.number那么谁即为当前(this)对象的number方法。

 

封装:使对象的属性尽可能私有,对象的方法尽可能的公开。用private表示此成员属性为该类的私有属性。