美文网首页
第十三天学Java(面向对象)

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

作者: Hoffnung_8164 | 来源:发表于2020-03-31 20:40 被阅读0次

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

    方法重载: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()

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

    相关文章

      网友评论

          本文标题:第十三天学Java(面向对象)

          本文链接:https://www.haomeiwen.com/subject/hrbguhtx.html