文章目录
java类的组成都有哪些呢?
代码示例
public class ConstructorTest {
// 属性:成员变量 系统默认会初始化赋值
public static int i = 0;
int a ,b;
// 默认的无参构造方法
public ConstructorTest(){ }
// 私有的构造方法:构造方法的访问权限修饰符不一定是public(牵扯到访问权限修饰符)
private ConstructorTest(int b){
this.b = b;
}
// 带参的构造方法,不能有返回值类型void也行
public ConstructorTest(int a,int b){
ConstructorTest(a);// 调用方法给成员变量赋值
this.b = new ConstructorTest(b).b;// 调用私有的构造方法给成员变量赋值
}
/**
* 成員方法
* @param a
*/
public void ConstructorTest(int a){
this.a = a;
}
// 静态代码块 随类的加载而加载 ,只执行一次
static{
int c = 1;
System.out.println("静态代码块i:"+i+",c:"+c);// 输出静态(类)的成员变量i,以及局部变量c
}
// 代码块,随对象的创建而加载,一个对象加载一次
{
int d = 2;
System.out.println("代码块i:"+i+",d:"+d);// 输出静态(类)的成员变量i,以及局部变量d
}
/**
* main程序的入口
* @param args
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws ClassNotFoundException {
// 无参构造方法创建对象
ConstructorTest c = new ConstructorTest();
System.out.println("对象c中的成员变量i:"+i+",a:"+c.a+",b:"+c.b);
// 带参私有的构造方法创建对象(在该类中可以创建对象)
ConstructorTest co = new ConstructorTest(3);
System.out.println("对象co中的成员变量i:"+i+",a:"+co.a+",b:"+co.b);
// 带参私有的构造方法创建对象
ConstructorTest con = new ConstructorTest(4,5);
System.out.println("对象con中的成员变量i:"+i+",a:"+con.a+",b:"+con.b);
}
}
运行结果
静态代码块i:0,c:1
代码块i:0,d:2
对象c中的成员变量i:0,a:0,b:0
代码块i:0,d:2
对象co中的成员变量i:0,a:0,b:3
代码块i:0,d:2
代码块i:0,d:2
对象con中的成员变量i:0,a:4,b:5
总结
看了代码有读者可能就有些疑问,为什么会输出四个"代码块i:0,d:2",这是因为在创建con对象时,为b赋值时创建了一个匿名的对象,且通过私有的构造方法赋值。注意私有的构造方法可以在本类中创建对象。