沁染—未来可期 2022-05-24 01:05 采纳率: 66.7%
浏览 104
已结题

java库存类的继承不会应用

img


我写一小部分,但是类的继承不会应用,希望哪个精通java的同学帮我一下,谢谢

  • 写回答

5条回答 默认 最新

  • 歇歇 2022-05-24 03:35
    关注
    获得2.50元问题酬金

    基本语法
    子类 extends 父类 { }
    1.java当中只能继承一个类,单继承。
    2.父类的私有属性和方法不能在子类中被访问。
    3.子类继承了父类中除了构造方法外的所有东西。
    4.子类继承了父类,子类包含父类中所有的属性。
    5.如果有一个类不想被继承,只需要在类名前加一个final。final修饰的类叫做密封类。
    6.super关键字,继承父类中的属性。
    就以下面的代码来陈述所述问题。
    父类以人类为对象

    //定义一个父类
    public class Human {
        private String name;
        private String sex;
        private int age;
    
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
                this.age = age;
        }
    
        public Human(String name, String sex, int age) {
            setName(name);
            setSex(sex);
            setAge(age);
        }
    
        public void eat() {
            System.out.println(name + "在吃饭");
        }
        public void sleep() {
            System.out.println(name + "在睡觉");
        }
    }
    

    子类有学生和教师

    //一个子类
    //类头定义父类的名称,一个类只可以继承一个父类
    public class Student extends Human{
        //定义子类的构造方法
        //子类的构造方法的输入参数包含两部分,
        //一部分是用来初始化继承于父类的属性,
        //另一部分是初始化自身所特有的属性
        public Student(String name, String sex, int age, String num, String schoolName) {
            //类的构造方法方法体中,
            //一部分初始化父类的属性,
            //super来调用父类的构造方法来初始化来继承父类的属性
            super(name, sex, age);
            //另一部分初始化自身特有的属性
            setNum(num);
            setSchoolName(schoolName);
    
        }
        //定义子类特有的属性
        private String num;//学号
        private String schoolName;//学校
    
        public String getNum() {
            return num;
        }
    
        public void setNum(String num) {
            this.num = num;
        }
    
        public String getSchoolName() {
            return schoolName;
        }
    
        public void setSchoolName(String schoolName) {
            this.schoolName = schoolName;
        }
    //定义子类特有的方法
        public void doHomework() {
            System.out.println(getName() + "在做作业");
        }
        public void exam() {
            System.out.println(getName() + "在考试");
        }
    }
    
    public class Teacher extends Human {
    
        public Teacher(String name, String sex, int age , String schoolName , String num) {
            super(name, sex, age);
            setSchoolName(schoolName);
            setCourse(num);
        }
    
        private String schoolName;//所在学校
        private String num;//工号
    
        public String getSchoolName() {
            return schoolName;
        }
    
        public void setSchoolName(String schoolName) {
            this.schoolName = schoolName;
        }
    
        public String getCourse() {
            return num;
        }
    
        public void setCourse(String num) {
            this.num = num;
        }
    
        public void teach() {
            System.out.println( getName() + "在上课" );
        }
        public void ready() {
            System.out.println( getName() + "在备课" );
        }
    }
    
    
    

    我们也一点过要了解在定义父类和子类的过程中,我们一定要知道向上转型。而相对应的向下转型是不安全的,只需要了解即可。向上转型的意思就是以上面代码为列

    Human human = new Teacher();
    Human human1 = new Student();
    
    
    

    然后可以用human来访问teacher或者student中的方法和属性。同样应为学生和老师继承了人类。human也可以访问人类中的方法和属性。

    我们也同样必须了解动态绑定
    动态绑定的前提是
    1.父类引用,引用子类对象
    2.子类和父类有同名的覆盖方法
    3.通过该父类的引用,调用该重写方法,此时就会发生动态绑定。

    评论

报告相同问题?

问题事件

  • 系统已结题 6月1日
  • 创建了问题 5月24日