抽象类、继承、接口

抽象类就是含有抽象方法的类

只有声明没有实现的方法

抽象类是作为父类被继承的,在多人同时进行同一项目时,由于类名等不统一而难以整合,所以就有了抽象这一概念,为的就是统一命名,方法在子类中去实现,这个获取抽象类中的方法就是继承

如果是一个毫不相干的类需要用到抽象类中的方法,这个时候就需要接口,把抽象方法方法写在接口中然后在类中去实现这个接口中的方法。

public class Employee extends Person {   
    private int salary;//工资

    public Employee(String id, String name, String sex, int salary) {
        super(id, name, sex);
        this.salary = salary;
    }

    @Override
    public void print() {
        super.print();
        System.out.println(salary);
    }
}

继承

extends是“拓展、延伸”的含义,public class Employee extends Person 就是声明一个叫做Employee的类,它是在Person类的基础上进行拓展,专业术语称之为继承自Person类。

super是“超”的含义,Person类相对于Employee类就是超类,通俗一点的说法是父类。

子类继承了父类的属性和方法,当然也可以在此基础上进行拓展——加和改。在这个案例中加了“薪水”属性,改了“打印”方法。这里有一个专业术语——重写(override)。

继承不仅仅解决了刚才的两个问题,还使得类有层次结构,逻辑上也更加合理。比如“员工”也是“人”。

抽象类

抽象方法只有声明,没有实现。

如果类中含有抽象方法,那么它就是抽象类。

抽象类是去完成上层规划,不去考虑具体实现细节,这个可以交由子类去实现。


接口

抽象类指的是其中含有抽象方法,而所谓接口,指的是其中所有的方法都是抽象方法。

为什么使用接口?

如果各个形状类自行其是,比如三角形面积返回值类型是float,矩形返回double,而圆形的方法名使用拼音。那么对于使用者必然造成困扰——太乱了!

而使用接口就起到了统一规划的目的,他的实现者(继承者)必须要实现它规划好的方法,不能更改。这样就增加了类的一致性,便于使用和维护。

猜你喜欢

转载自blog.csdn.net/mo_dan_ren_xing/article/details/80929326