Java中构造方法、实例方法、类方法的区别
2014-12-17 10:41
369 查看
1. 构造方法
构造方法负责对象的初始化工作,为实例变量赋予合适的初始值。必须满足以下的语法规则:
方法名与类名相同;
不要返回类型(例如return、void等);
不能被static、final、native、abstract和synchronized修饰,不能被子类继承。
例如以下例子:
1.1. 默认构造方法
默认构造方法时没有参数的构造方法,分为
a.隐含的默认构造方法:public ClassName(){}
b.程序显示定义默认构造方法:public Employee(){this("无名氏");}
可以调用ClassName类的默认构造方法来创建对象,没有默认构造方法则不合法,例如:
1.2. 重载构造方法
通过new创建一个对象后,在不同的条件下,对象可能会有不同的初始化行为,可以通过重载构造方法来表达对象的初始化行为。具体参考this关键字的用法。
1.3. 子类调用父类的构造方法
父类的构造方法不能被子类调用,可以通过super语句调用父类的构造方法。例如:
用super调用父类的构造方法必须遵守以下规则:
1. 子类的构造方法中不能直接通过父类的方法名调用父类的构造方法,使用super语句;
2. 加入在子类的构造方法中有super语句,它必须作为构造方法的第一条语句(同this语句);
1.4. 构造方法的作用域
当前类的其他构造方法通过this语句调用;
当前类的子类的构造方法通过super语句调用;
在程序中通过new语句调用。
1.5. 构造方法的private访问级别
构造方法为private级别时,意味着只能在当前类中访问它:当前类的其他构造方法中可以通过this语句调用,此外还可以在当前类的成员方法中使用new调用。
以下场合中,可以把类的所有构造方法声明为private:
这个类中仅仅包含一些供其他程序调用的静态方法,没有任何实例方法。
禁止这个类被继承。声明为private后,如果定义了它的子类,子类的方法中无法调用父类的任何构造方法。
类需要把构造自身实例的细节封装起来,不允许其他程序通过new语句创建这个类的实例。提供静态方法。
2. 类方法
用static关键字修饰,可以直接通过类名调用,不需要创建类的对象来调用该方法。
3. 实例方法
可以通过类的实例调用对象的方法,也称为成员方法。
构造方法负责对象的初始化工作,为实例变量赋予合适的初始值。必须满足以下的语法规则:
方法名与类名相同;
不要返回类型(例如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. 实例方法
可以通过类的实例调用对象的方法,也称为成员方法。
相关文章推荐
- JAVA中,构造方法与实例方法的区别
- Java静态初始化,实例初始化以及构造方法
- Java静态初始化,实例初始化以及构造方法
- Java 中的构造方法与构造代码块的区别
- java 静态方法和实例方法的区别
- java 静态方法和实例方法的区别
- Java 静态方法和实例方法的区别
- java(构造方法实例)
- 静态和实例方法区别-java
- java 静态方法和实例方法的区别
- java 静态方法和实例方法的区别
- Java静态初始化,实例初始化以及构造方法
- JAVA静态代码块执行过程 以及和构造方法的区别
- Java静态初始化,实例初始化以及构造方法复习~
- java 静态方法和实例方法的区别
- Java方法和构造方法的区别
- Java静态初始化,实例初始化以及构造方法
- java中 静态成员、实例成员、构造方法在子类和父类中的执行顺序
- java 类方法和实例方法 以及 类变量和实例变量 各种区别
- java 静态方法和实例方法的区别