java class 构造 函数 例子_Java中构造方法、实例方法、类方法的区别

本文详细介绍了Java中的构造方法,包括构造方法的定义、默认构造方法、重载、子类调用父类构造方法的规则以及private构造方法的应用场景。此外,还提到了类方法和实例方法的特性。
摘要由CSDN通过智能技术生成

1. 构造方法

构造方法负责对象的初始化工作,为实例变量赋予合适的初始值。必须满足以下的语法规则:

方法名与类名相同;

不要返回类型(例如return、void等);

不能被static、final、native、abstract和synchronized修饰,不能被子类继承。

例如以下例子:

public class Sample{

private in x;

public Sample(){              //不带参数的构造方法

this(1);

}

public Sample(int x){         //带参数的构造方法

this.x=x;

}

public int Sample(int x){     //不是构造方法,return

return x++;

}

}

1.1. 默认构造方法

默认构造方法时没有参数的构造方法,分为

a.隐含的默认构造方法:public ClassName(){}

b.程序显示定义默认构造方法:public Employee(){this("无名氏");}

可以调用ClassName类的默认构造方法来创建对象,没有默认构造方法则不合法,例如:

ClassName c=new ClassName();   //此语句合法

1.2. 重载构造方法

通过new创建一个对象后,在不同的条件下,对象可能会有不同的初始化行为,可以通过重载构造方法来表达对象的初始化行为。具体参考this关键字的用法。

1.3. 子类调用父类的构造方法

父类的构造方法不能被子类调用,可以通过super语句调用父类的构造方法。例如:

public class MyExpection extends Exceptio{

public MyException(){

//调用Exception父类的Exception(String msg)方法

super("Something is error!");

}

public MyException(String msg){

//调用EXception父类的Exception(String msg)方法

super(msg);

}

}

用super调用父类的构造方法必须遵守以下规则:

1. 子类的构造方法中不能直接通过父类的方法名调用父类的构造方法,使用super语句;

2. 加入在子类的构造方法中有super语句,它必须作为构造方法的第一条语句(同this语句);

1.4. 构造方法的作用域

当前类的其他构造方法通过this语句调用;

当前类的子类的构造方法通过super语句调用;

在程序中通过new语句调用。

1.5. 构造方法的private访问级别

构造方法为private级别时,意味着只能在当前类中访问它:当前类的其他构造方法中可以通过this语句调用,此外还可以在当前类的成员方法中使用new调用。

以下场合中,可以把类的所有构造方法声明为private:

这个类中仅仅包含一些供其他程序调用的静态方法,没有任何实例方法。

禁止这个类被继承。声明为private后,如果定义了它的子类,子类的方法中无法调用父类的任何构造方法。

类需要把构造自身实例的细节封装起来,不允许其他程序通过new语句创建这个类的实例。提供静态方法。

2. 类方法

用static关键字修饰,可以直接通过类名调用,不需要创建类的对象来调用该方法。

3. 实例方法

可以通过类的实例调用对象的方法,也称为成员方法。

1. 构造方法

构造方法负责对象的初始化工作,为实例变量赋予合适的初始值。必须满足以下的语法规则:

方法名与类名相同;

不要返回类型(例如return、void等);

不能被static、final、native、abstract和synchronized修饰,不能被子类继承。

例如以下例子:

publicclassSample{

privatein x;

publicSample(){//不带参数的构造方法

this(1);

}

publicSample(intx){//带参数的构造方法

this.x=x;

}

publicintSample(intx){//不是构造方法,return

returnx++;

}

}

1.1. 默认构造方法

默认构造方法时没有参数的构造方法,分为

a.隐含的默认构造方法:public ClassName(){}

b.程序显示定义默认构造方法:public Employee(){this("无名氏");}

可以调用ClassName类的默认构造方法来创建对象,没有默认构造方法则不合法,例如:

ClassName c=newClassName();//此语句合法

1.2. 重载构造方法

通过new创建一个对象后,在不同的条件下,对象可能会有不同的初始化行为,可以通过重载构造方法来表达对象的初始化行为。具体参考this关键字的用法。

1.3. 子类调用父类的构造方法

父类的构造方法不能被子类调用,可以通过super语句调用父类的构造方法。例如:

publicclassMyExpectionextendsExceptio{

publicMyException(){

//调用Exception父类的Exception(String msg)方法

super("Something is error!");

}

publicMyException(String msg){

//调用EXception父类的Exception(String msg)方法

super(msg);

}

}

用super调用父类的构造方法必须遵守以下规则:

1. 子类的构造方法中不能直接通过父类的方法名调用父类的构造方法,使用super语句;

2. 加入在子类的构造方法中有super语句,它必须作为构造方法的第一条语句(同this语句);

1.4. 构造方法的作用域

当前类的其他构造方法通过this语句调用;

当前类的子类的构造方法通过super语句调用;

在程序中通过new语句调用。

1.5. 构造方法的private访问级别

构造方法为private级别时,意味着只能在当前类中访问它:当前类的其他构造方法中可以通过this语句调用,此外还可以在当前类的成员方法中使用new调用。

以下场合中,可以把类的所有构造方法声明为private:

这个类中仅仅包含一些供其他程序调用的静态方法,没有任何实例方法。

禁止这个类被继承。声明为private后,如果定义了它的子类,子类的方法中无法调用父类的任何构造方法。

类需要把构造自身实例的细节封装起来,不允许其他程序通过new语句创建这个类的实例。提供静态方法。

2. 类方法

用static关键字修饰,可以直接通过类名调用,不需要创建类的对象来调用该方法。

3. 实例方法

可以通过类的实例调用对象的方法,也称为成员方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值