第十三天学Java(面向对象)

2020-03-31  本文已影响0人  Hoffnung_8164

时间就像一张网,你撒在哪里,收获就在哪里。       

方法重载:overload

    重载:一个类中定义多个相同名称的方法

    要求

        方法名称相同

        参数列表不同(类型,个数。顺序)

        与访问修饰符/返回值类型无关

        调用带有重载的方法时,需要根据传入的实参去找到

方法的重载

        同一个功能

        根据参数的不同,执行的具体的方法也不同

    衡量方法是否重载

        1、同一个类中

        2、方法名必须一致

        3、参数列表必须不同,类型,个数,顺序

    举例

    就是同一个功能的方法,因为参数不同,调用的具体方法也不同

    如何判定多个方法是否是重载的?衡量标准,要同时满足以下三条

        1、同一个类中

        2、方法名必须一致

        3、参数列表必须不同,类型,个数,顺序

    优点

    1、简化了开发的压力

    2、简化了记忆的压力

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

     基本原理

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

    构造方法

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

            1、声明的语法

            publi 类名(){}

            2、调用的方式

            new关键字调用

            3、作用

    用于创建对象

        普通方法:一段具有特殊功能的方法,而且可以被多次调用

        声明的语法:public static void main(String[]){}

        调用的方式:方法名(实参)

    作用:避免重复的代码增强代码的可读性

             提高程序的可维护性

    1、编写Java的源代码:XXX.java

    2、将源文件进行编译,XXX。class

          javac命令 javac XXX.java

    3、JVM执行字节码文件:XXX。class

        Java反编译工具

        javap -c -1 -private XXX.calss

java编译器提供的默认的构造方法

    问题:创建对象的时候,代码:new Person();调用的这个Person()的这个方法,哪来的

    结论:通过反编译工具,发现了一些和源代码不相符的内容,这就是javac编译器,自动给代码中添加的构造方法。用于创建对象。

    java编译器,发现代码中没有任何的构造方法,在编译时,会自动的帮我们添加一个无参的构造方法。

    如果代码中自己写了构造方法,那么编译器不再帮我们添加无参的构造方法。    

    注意点:

        1、如果代码中,没有写构造方法,编译器会自动的添加一个无参的构造方法

        2、如果代码中。写了构造方法。编译器都不hi再给我们添加无参的构造方法,编译器不会帮我们自动添加,需要我们在写了有参的构造方法,再写一个无参的构造方法

对比一下构造方法和普通方法:

    

    this关键字

        词义:这个。表示当前对象

        就近原则问题

        当写代码的时候,要给成员变量,参数,局部变量等等,要进行命名。根据见名知意的原则,很容易就命名冲突了,在程序当中,有个就近原则,一旦名字冲突,就要看离哪个近

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

            

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

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

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

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

    this关键字的用法一

        表示当前对象

        

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

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

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

    this关键字的用法二

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

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

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

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

三、总结

    1、方法的重载:overload

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

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

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

            A:同一个类中

            B:方法名必须一致

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

    2、构造方法:

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

        声明的语法:

            public 类名(){}

            调用:

            new关键字来进行调用。

        作用:

            创建对象。

    注意点:

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

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

    分类:

            无参构造:创建对象。

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

            class Person{

                String name;

               int age;

               public Person(){}

       public Person(String name,int age){

               this.name = name;

               this.age = age;

          }

        }

3、this关键字

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

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

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

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

上一篇下一篇

猜你喜欢

热点阅读