在上节博客中介绍了类的继承、构造函数以及静态代码块的执行顺序相关知识点,本章节主要介绍构造函数、构造代码块、成员方法的相关知识。
一、成员方法
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"); 作用就是给对象p的name属性赋初值
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静态代码块:随着类的加载而加载仅执行一次,优先级别为最高。
到此,关于继承、构造函数、静态代码块的执行顺序相关知识点介绍完毕,谢谢您的阅读。