转载

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);
    }
}

得到结果:

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

注意:子类不能继承父类的构造器,因为子类有自己的构造器。
但是子类可以继承父类的私有成员(成员变量,方法),只是子类无法直接访问而已,可以通过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("我是重写方法");
    }
}
原文  https://segmentfault.com/a/1190000020543968
正文到此结束
Loading...