乐趣区

Java酒德利商城app系统开发中的继承

概述:
1. 什么是继承
2. 继承的好处
3. 继承的格式
4. 继承案例
5. 继承后成员变量重名
6. 继承后成员方法重名
7. 方法重写
系统开发可以去找吴燕:[#156-22 微 27-78 电 87#]
1. 继承的含义

总结:就是子类继承父类的属性和行为,使得子类对象可以直接具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。

2. 继承的好处

1. 提高代码的复用性(相同的代码不需要重复的写,只需要提取到父类中,子类可以直接使用)
2. 让类和类之间产生了关系
3. 继承的格式

3. 继承的格式

class 父类 {...}

class 子类 extends 父类 {...}
// Java 是单继承的。一个类智能继承一个类(一个人只有一个亲生父母)

4. 继承案例

1. 学生类
属性:姓名、年龄、学习、吃饭、睡觉;
2. 老师类
属性:姓名、年龄、教书、吃饭、睡觉;
3. 班主任类
属性:姓名、年龄、管理、吃饭、睡觉;

4.1 代码实现
共同拥有的属性抽取到父类,子类只需要继承父类就可以得到这些属性、方法,子类只需要写子类特有的方法即可。

//    定义父类
public class Human {
    private String name;
    private int age;

    public void eat(){System.out.println("我是父类的吃方法");
    }
    public void sleep(){System.out.println("我是父类的睡觉方法");
    }
  }
  // 省略 get、set、构造方法



//   定义学生类
public class Student extends Human {public void study(){System.out.println("我是学生类的上课方法");
    }


//   定义老师类
public class Teacher extends  Human {public void teach(){System.out.println("我是老师类的上课方法");
        }
    }
}

//   定义班主任类
public class ClassTeach extends Human{public void manage(){System.out.println("我是班主任类的管理方法");
    }
}


//   定义测试类
    public static void main(String[] args) {Teacher teacher = new Teacher();
        teacher.eat();
        teacher.sleep();
        teacher.teach();
        teacher.setAge(21);
        teacher.setName("小明");
        System.out.println(teacher);
    }
}

得到结果:

注意:子类不能继承父类的构造器,因为子类有自己的构造器。但是子类可以继承父类的私有成员(成员变量,方法),只是子类无法直接访问而已,可以通过 getter/setter 方法访问父类的 private 成员变量。

5. 继承后成员变量重名
思考 1:子类继承父类出现重名的成员变量时会有变化吗?

子类继承父类后,出现重名的成员变量,子类会优先访问自己的,自己没有才去访问父类的

思考 2:子类如何访问父类的成员变量?

super:代表的是父类对象的引用,this:代表的是当前对象的引用。注意:子类构造器的第一行都隐含了一个 super()去调用父类    无参数构造器,super()可以省略不写。格式:super. 父类成员变量名(super 后面可是有点的哦)

6. 继承后成员方法重名
思考:子类继承父类出现成员方法重名会有变化吗?

子类、父类中出现重名的成员方法,子类对象会优先调用自己的方法。

7. 方法重写

子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,也称为重写或者复写。声明不变,重新实现。

7.1@Override 重写注解
-@Override: 注解,重写注解校验!
这是注解标记的方法,就说明这个方法必须是重写父类的方法,否则编译阶段报错。
建议重写都加上这个注解,一方面可以提高代码的可读性,一方面可以防止重写出错!
代码演示:

public class Student extends Human {
    @Override
    public void sleep(){System.out.println("我是重写方法");
    }
}
退出移动版