zoukankan      html  css  js  c++  java
  • 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:

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

  • 相关阅读:
    我的书单
    写一个小demo过程中遇到的各种问题 学生管理考勤系统(网页模拟)
    高程三 面向对象程序设计
    JavaScript 函数与对象的 简单区别
    高程三 基本包装类型部分的学习
    巨简单巨丑的计算器(写的我快自闭了)
    checked选择器实现tab切换
    JavaScript进行简单的随即验证码生成(适合和我一样刚入门一本完整的教材书都没看完的弟弟)
    dom编程艺术章12
    vue插件开发与发布
  • 原文地址:https://www.cnblogs.com/Timenow/p/6790567.html
Copyright © 2011-2022 走看看