继承简介:
继承是java语言的三个重要特性之一,继承同时也可以说是oop(面向对象)的基础,因为继承使java有了等级的划分,更加具有人性.
子类与超类:
继承在生活中是一种:财产权利,通过继承实现财产的移转,但是在java中代表的是扩展这个类的用途或者方法等等,使其作用更加庞大,由此诞生出了子类与超类.
子类:java中extends(继承)前面的类则是子类.
超类:又称父类,被别的类extends(extends)就是超类.
知道了子类与超类的意思,便是在生活中的例子了如:Employee(雇员)类,假设你在某个公司工作,这个公司普通雇员的待遇与经理的待遇存在这一些差异,不过他们之间也存在这很多相同的地方,列如:他们都领薪水。只是普通雇员在完成本职任务之后只领薪水,而经理在完成预期的任务之后还能得到奖金.这种形式就需要使用继承,这是因为需要为经理定义一个,Manager(经理)类,以便增加一些新功能.但可以重用Employee(雇员)类中已经编写部分代码,并将其中所有的域保留下来.从理论上来说,在Manager与Employee之间存在这明显的"is - a"(是)关系,每个经理都是一名雇员:"is - a"关系是继承的一个明显特征.
继承的使用:
java提供关键字extends来使用继承,基本语法为:
class Manager extends Employee{
//添加方法和域
}
雇员的代码为:
//雇员类
public class Employee{
//年龄
int age;
//薪水
int salary;
//名字
String name;
//输出信息方法
void run(){
System.out.println("年龄:"+age+",薪水:"+salary+",名字:"+name);
}
}
//经理类
class Manager extends Employee{
//奖金
int bonus;
//输出信息
void run(){
System.out.println("年龄"+age+",薪水:"+salary+",名字:"+name+",奖金:"+bonus);
}
}
//测试类
class Test{
public static void main(String[] args) {
Manager manager = new Manager();
manager.age=15;
manager.salary=1_0000;
manager.name="小布";
manager.bonus=1_0000;
manager.run();
}
}
输出:
年龄15,薪水:10000,名字:小布,奖金:10000
注意事项:
- java语言是不支持多继承的,但是接口可以实现多个来弥补不能多继承的问题.
- 构造方法不会被子类继承,但可以从子类中调用父类的构造方法。
- 如果子类重载父类的方法,同时实例化的也是子类会优先调用子类的方法.
- 子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法),但不一定可以直接访问(比如父类私有的属性方法)
- 如果定义一个类时,没有调用extends则他的父类是Java.lang.Object
小技巧:
在idea软件中ctrl+H可以查看一个类的结构,继承了什么类,被继承了什么类如:
创作难免有错误和不当的地方,还请大家多多指教。