面向对象(构造函数,this关键字)

一.方法的重载 overload

概念:一个类中,一个功能的方法多种体现形式(有不同的方法体)

如何判定一个方法是不是重载

1.在同一个类中

2.方法名必须一致

3.参数列表必须不同(个数,顺序,类型)

4.与返回值无关 和任何返回值都无关

优点:

1.简化了开发压力

2.简化了记忆压力

3.调用方法更方便,更简洁,又满足了不同的情况

基本原理

    当方法名一致时,通过形参列表的不同来选择要执行的方法

二.构造方法

构造方法是一个很特殊的方法

作用:用来new对象

注意:方法名与类名相同

2.没有返回值

3.只能又访问权限的修饰符,不能用static

4.当没有声明任何构造方法的时候,系统会默认添加一个无参构造方法,当你加了任何一个构造方法,

编译器提供的无参构造方法就不在了。

三.this关键字

词义:这个。

2.3.1 就近原则问题

当写代码的时候,要给成员变量,参数,局部变量等等,要进行命名。根据见名知意的原则,很容易就命名冲突了。

在程序当中,有个就近原则,一旦名字冲突,就要看离哪个声明近。

导致名称中成员变量和局部变量的命名冲突!!!

publicPerson(Stringname,intage){//name="李小花"

        name=name;//=两侧的name,都是指参数

        age=age;

}

因为命名规范,见名知意,成员变量和局部变量,命名相同了。

因为就近原则问题:构造方法Person中,name和age,都会看成了这个参数,就是局部变量。


希望有一种方式,来告诉编译器:=左边的是成员变量,=右边的才是参数。

    可以借助于this这个关键字解决。

2.3.2 this的用法一

表示当前对象。

this.属性,没有this的就是局部变量。可以解决命名冲突的问题。

publicPerson(Stringname,intage){//name="李小花"

        this.name=name;//=左侧的是this的name属性

        this.age=age;

}

使用this关键字,明确的告诉编译器,this后的这个name,就是成员变量。对象的属性。没有this的就是参数。

解决成员变量和局部变量的命名冲突。

    this点的就是成员变量,没有this的就是局部变量。

2.3.3 this的用法二

this()指代当前类的构造方法。

this(参数),就表示的构造方法。

如果一个类中,有多个构造方法,之间存在了调用关系,那么使用this()来指代这个构造方法。具体指代哪个构造方法,要靠参数来区分。

注意点:当this()指代构造方法,那么必须放在首行。

2.4、匿名对象

2.5、封装性

三、总结

1、方法的重载:overload

概念:一个功能的多种形式。

理解:一个功能,根据参数的不同,执行的具体的方法也不同。

衡量多个方法是否是重载:

A:同一个类中

B:方法名必须一致

C:参数列表必须不同:顺序,个数,类型

2、构造方法:

概念:就是一个特殊的方法。声明,调用,作用。

声明的语法:

    public类名(){}

调用:

    new关键字来进行调用。

作用:

    创建对象。

注意点:

1、如果一个类,没有写构造方法,那么编译器会自动添加一个无参的构造方法。

2、如果一个类,写了构造方法,那么编译器不再添加。

分类:

无参构造:创建对象。

有参构造:创建对象,并给属性初始化赋值。

classPerson{

    Stringname;

intage;

publicPerson(){}

publicPerson(Stringname,intage){

this.name=name;

this.age=age;

   }

}

3、this关键字

用法一:指代本类的对象的。

就可以访问属性和方法。this.属性,this.方法

用法二:指代本类的构造方法。this()

如果一个类中,有多个构造方法,靠参数来区分。指代构造方法时,要放在首行。

你可能感兴趣的:(面向对象(构造函数,this关键字))