java class 构造器的理解

本文介绍了Java构造器的概念及其重要性,包括缺省和非缺省构造器。在创建对象时,构造器用于初始化成员变量。在继承关系中,子类构造器会调用父类的构造器,如果父类有有参构造器,可以通过子类构造器传递参数以初始化父类属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是构造器???:
------构造器是Java和C#学习中很重要的一个概念,构造器可以提供许多特殊的方法,构造器作为一种方法,负责类中成员变量(域)的初始化。实例构造器分为缺省构造器(无参构造器)和非缺省构造器(有参构造器)。
------构造器最大的用处就是在创建对象时执行初始化,当创建一个对象时,系统会为这个对象的实例进行默认的初始化 。如果想改变这种默认的初始化,就可以通过自定义构造器来实现。

两个继承关系的类之间因而构造器而引出的问题:
------比方说有两个继承关系的类,Father & Son,首先一点的是要知道构造器(无论有参构造器还是无参)执行时都会先执行一句 super();会去调用父类Father的构造方法,如果父类的构造方法是无参构造,那么父类即使有一些属性,也是得不到初始化的机会的。如果父类是有参构造器,那么我们如果想给父类的属性进行初始化,可以super(//这里填父类构造器的参数),通过子类的有参构造器来 “顺路“ 给父类构造器初始化。

package com.javase.parctice;

public class Demo6 {
    public static void main(String[] args) {
    Son son = new Son(666);
    //最终运行结果为0   666
    //也就是说Son里传入666 引用给了son
    //而Father接收不到参数
    //只能输出默认值0    
    son.print();
    }
}

class Father{
    private int id;
    //不写构造器了  会自动生成无参构造器
    public void print(){
        System.out.println(id);
    }
}

class Son extends Father{
    private int id;

    public Son(int id) {
        //这个super()没啥用  因为调用父类时是个无参
        //父类也有super()   依然因为无参  没啥影响
        super();
        this.id = id;
    }

    public void print(){
        //这里我们super一下父类的print方法
        //但实际
        super.print();
        System.out.println(this.id);
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值