Java基础之剖析java类的组成

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赋值时创建了一个匿名的对象,且通过私有的构造方法赋值。注意私有的构造方法可以在本类中创建对象。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值