java 笔记(1)在子类中,一定要访问父类的有参构造方法?

abstract class Person{
    private int age;
    private String name;
    public Person(int age,String name){
        this.age=age;
        this.name=name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    
    public abstract void want();
}
 
class Student extends Person{
    private int score;
    
    
    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    public Student(int age, String name,int score) {
        super(age, name);
        this.score=score;
    }

    public void want() {
        System.out.println("姓名:"+getName()+"年龄:"+getAge()+"成绩:"+getScore());
    }
}

class Worker extends Person{
    private int money;
    
    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }

    public Worker(int age, String name,int money) {
        super(age, name);
        this.money=money;
    }

    public void want() {
        System.out.println("姓名:"+getName()+"年龄:"+getAge()+"工资:"+getMoney());
    }
    
}
public class ABSDemo01 {

    public static void main(String[] args) {
        Student s = new Student(10, "小明", 100);
        s.want();
        Worker w = new Worker(35, "大明", 1000);
        w.want();
    }

}

分析上面的代码:

上面代码,在父类中已经重写了构造方法public Person(int age,String name)。如果在子类中不进行父类的有参构造方法的访问,子类就会默认访问父类的无参构造方法super(),但是父类已经构造了有参构造方法,父类中并没有无参构造方法,那它就不能调用了,所以编译就无法通过了。

总结1:
  Java规定类的构造方法只能由new调用,程序员不能直接调用,但可用super()间接调用,类的构造方法是不能继承的
总结2:
  ♥♥如果子类构造方法中没有显示调用父类构造方法,那么系统自动去调用父类的默认构造方法super()。

总结3:

  创建有参构造方法后,系统就不再有默认无参构造方法。如果没有任何构造方法,系统会默认有一个无参构造方法。

总结4:

  ♥♥在没有给类提供任何构造方法时,系统会自动提供一个无参的方法实现为空的构造方法。一旦提供了自定义构造方法,系统将不会再提供这个默认构造方法。如果要使用它,程序员必须手动添加。

转载于:https://www.cnblogs.com/Timenow/p/6790567.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值