四、成员方法、构造方法、普通代码块、构造代码块、静态代码块应用技术分享

在上节博客中介绍了类的继承、构造函数以及静态代码块的执行顺序相关知识点,本章节主要介绍构造函数、构造代码块、成员方法的相关知识。

一、成员方法

1.1 概念:

成员方法,成员方法又称成员函数,是类的实例对象的一部分,用以实现具体的业务逻辑,完成一定的功能,是实现多态的方式之一。

1.2 代码展现形式

            [修饰符] [返回值默认为void] 成员方法 (形式参数列表)

            {

                //业务语句

            }

1.3 用法

1)成员方法名与类名不同,当成员方法名相同而参数列表不同时则称之为重载(overload)。

            (2)调用形式为:类对象 .成员方法名

1.4代码展示

public class Person {

            String name;

            int age;

            public void say(int age)//一个int 类型参数

            {

                System.out.println("I am "+age+"years old");

            }

            public void say(int age,String name)//两个参数,一个int,一个String

            {

                System.out.println("I am "+name+", and I am "+age+"years old");

            }        

}    

1.5注意事项(方法重载时)

(1)不能通过参数的名称区分是否为不同参数。

(2)不能根据方法的返回值判断是不是同一个方法。

(3)方法名相同(前提是同一个类中),如果方法名不同则不能称之为重载。

(4)重载是为了让类对同一方法处理不同参数而提供的一种机制。

(5)不同参数列表指的是参数类型个数、类型、顺序的不同(至少一个不同),这样才能才能称之为重载,

否则视为同一个方法(编译时不能通过)。

(6)使用重载原因:当定义的功能相同,但参与运算的未知内容不同,那么,这时就定义一个函数名称表示该功能,方便阅读,而通过参数列表的不同来区分多个同名函数

二、构造方法

2.1 概念:

构造方法,构造方法又称构造函数,构造器,用以给类的对象参数进行初始化,本人更偏向于前两者。

2.2 代码展现形式

[修饰符] 类名 (形式参数列表)

            {

                //业务语句

            }

2.3 用法

(1) 构造方法没有返回值

(2)构造方法方法名必须和类保持一致

(3)构造方法之间互相调用通过this关键字,形式为 this(参数),其中参数个数已经类型根据需求而定

(4)new 对象时使用,用以给类的实例对象实例化,比如Person p=new Person("zhangsan"); 作用就是给对象pname属性赋初值

2.4具体代码实现

            public class Person {

                String name;

                int age;

                public Person() {

                    System.out.println("我是无参构造方法");

                }

                public Person(String name) {

                    this();//通过this()调用没有参数的构造方法

                this.name = name;

                }

                public Person(String name, int age) {

                    this(name);//通过this(String)调用只有一个String类型的构造方法

                    this.age = age;

                }

2.5注意事项

(1)任何类都至少有一个构造函数,这是因为如果没有人为为类添加构造方法那么JVM会自动为类增加一个无参的构造方法

(2)构造方法之间调用不能用"."来连接,具体应用参考上文代码

(3)this代表当前对象的引用。也就是说哪个对象调用所在方法,this就代表谁。

        

三、普通代码块

3.1 概念:

在方法或者语句中出现的{},就称为普通代码块。普通代码块和一般代码块的执行顺序由他们在代码中的位置决定。

3.2代码展示

            @Test

            public void test()

            {

                {

                    int A=1;

                    System.out.println("我是普通代码块中的变量,A="+A);

                }

                int A=2;

                System.out.println("我是主方法内的变量,A="+A);

                {

                    int B=3;

                    System.out.println("我是普通代码块内的变量,B="+B);

                }

    }

3.3输出结果:

我是普通代码块中的变量,A=1

我是主方法内的变量,A=2

我是普通代码块内的变量,B=3

     

四、构造代码块

4.1 概念:

直接在类中定义且没有static关键字修饰的代码块就称为构造代码块,构造代码块在创建对象时时被调用,且每次创建对象时都会被调用,另外构造代码块执行顺序优先于类的构造函数。

4.2 代码展现

            public class Person {

                {

                    System.out.println("我是构造代码块一");

                }

                public Person()

                {

                    System.out.println("我是构造方法");

                }

                {

                    System.out.println("我是构造代码块二");

                }

            public static void main(String[] args) {

                Person person1=new Person();

Person person2=new Person();

            }

}

4.3执行结果

我是构造代码块一

我是构造代码块二

我是构造方法

我是构造代码块一

我是构造代码块二

我是构造方法

五、静态代码块

5.1 概念:

静态代码块是使用static修饰的代码块,静态代码块的作用是为类进行初始化,JVM在加载类时会先执行静态代码块,静态代码块仅执行一次而且优先于主方法而先执行(在上一篇博客中有提到)。

5.2代码展示

public class Person {

            public void say()

            {

                System.out.println("我是成员方法,我会说话");

            }

            static{

                System.out.println("我是静态代码块,你需要先执行我。");

            }

          

        public static void main(String[] args) {

            Person person=new Person();

            person.say();

    }

}

5.3执行结果:

我是静态代码块,你需要先执行我。

我是成员方法,我会说话

六、总结

6.1 成员方法

是类的实例对象的一部分,用以实现具体的业务逻辑,完成一定的功能,是实现多态的方式之一,随着对象的存在而存在随着对象的销毁而销毁。

需要注意的是:方法名不能与类相同。

重载时注意事项:同一个类中同名方法,但是参数列表不同。(具体讲义参考1.5)

   6.2 构造方法,用以给类的对象参数进行初始化,随着对象的存在而存在随着对象的销毁而销毁。

   6.3普通代码块:作用于仅限于局部

   6.4.构造代码块:优先于构造方法,成员方法而执行。

6.5静态代码块:随着类的加载而加载仅执行一次,优先级别为最高。

                  

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

到此,关于继承、构造函数、静态代码块的执行顺序相关知识点介绍完毕,谢谢您的阅读。

      

  

原文地址:https://www.cnblogs.com/yueyazhishang/p/3993752.html