java构造器

1、构造器的作用

new对象,并在new对象的时候为实例变量赋值。

2、构造器的语法格式

构造器又称为构造方法,那是因为它长的很像方法。但是和方法还是有所区别的。

【修饰符】 class 类名{

    【修饰符】 构造器名(){

          // 实例初始化代码

    }

    【修饰符】 构造器名(参数列表){

        // 实例初始化代码

    }

}

public class Book {
    
    private String bookName;
    private String author;
    private double price;
    private String detail;

    public Book() {
    }//无参构造

    public Book(String bookName, String author, double price, String detail) {
        this.bookName = bookName;
        this.author = author;
        this.price = price;
        this.detail = detail;
    }//有参构造

}

 

注意事项:

1、构造器名必须与它所在的类名必须相同

2它没有返回值,所以不需要返回值类型,甚至不需要void

3如果你不提供构造器,系统会给出无参数构造器,并且该构造器的修饰符默认与类的修饰符相同

4如果你提供了构造器,系统将不再提供无参数构造器,除非你自己定义。

5构造器是可以重载的,既可以定义参数,也可以不定义参数。

6、构造器的修饰符只能是权限修饰符,不能被其他任何修饰

3this调用本类其他构造器

同一个类中,使用this(【实参列表】)可以实现构造器之间的相互调用。

this():调用本类的无参构造

this(实参列表):调用本类的有参构造

this(【实参列表】)只能出现在构造器内首行

注意:不能出现构造器递归调用

 

public class Book {
    private String bookName;
    private String author;
    private double price;

    public Book() {
        this("book","author",150);
    }

    public Book(String bookName, String author, double price) {
        this.bookName = bookName;
        this.author = author;
        this.price = price;
    }
    public Book(String bookName,double price){
        this();
        this.bookName = bookName;
        this.price = price;
    }
}

4super调用父类构造器

在继承关系中,子类不会继承父类的构造器,子类构造器可以通过super(【实参列表】)来调用父类构造器。

子类的每个构造器中默认隐藏super(),即默认调用父类的无参构造器。

子类构造器中可以显示使用super(【实参列表】)来调用父类无参或有参构造器,那么默认隐藏的super()不再存在。 

public class Book {//父类
    private String bookName;
    private String author;
    private double price;

    public Book() {

    }

    public Book(String bookName, String author, double price) {
        this.bookName = bookName;
        this.author = author;
        this.price = price;
    }
}
public class Novel extends Book{//子类
    public Novel() {
    }

    public Novel(String bookName, String author, double price) {
        super(bookName, author, price);
    }
}

如果父类没有无参构造,则必须在子类构造器中显示使用super(实参列表)来调用父类构造器。

super(【实参列表】)只能出现在子类构造器的首行

总之:使用子类任意构造器创建对象时,必须要直接或间接通过super(【实参列表】)先调用执行父类构造器。

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值