继承的概念
类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法
其实就是可以继承父类的属性和方法
怎么继承
使用关键字extends,如下所示,B继承A, A是B的父类,B是A的子类。当一个类不显示的继承其它类时,默认继承Object类,Object是所有的父类。在java中只有直接父类和间接父类关系,没有兄弟关系,爷孙关系。
父类的东西,子类可以全部继承吗?
不,当然不是;
权限修饰符的继承问题
被private修饰的,是不可以被继承的,因为private修饰的只能在本类中可见,子类是不可见的;另外父类被protected或public修饰的,子类是可以继承的;被默认修饰符修饰的只能在同包下的子类是可以继承的;
构造器的继承问题
构造器是不会被子类继承的,但子类的对象在初始化时会默认调用父类的无参构造器,当父类显示写了有参构造器,且没有无参构造器。子类继承父类的时候必须显示的调用父类的有参构造器。调用的方式可以使用super(a,b)来调用;
static修饰符的继承问题
子类是不会继承父类被static修饰的方法和变量,但是可以调用;如图所示,this.a()就会报错,普通方法的继承this.method_a()就不会报错;
举个例子
格式:
class 子类 extends 父类 {}
接下来通过一个案例来学习子类是如何继承父类的,如下所示。Example01.java
/*
* 定义员工类Employee
*/
class Employee {
String name; // 定义name属性
// 定义员工的工作方法
publicvoid work() {
System.out.println("尽心尽力地工作");
}
}
/*
* 定义研发部员工类Developer 继承 员工类Employee
*/
class Developer extends Employee {
// 定义一个打印name的方法
publicvoid printName() {
System.out.println("name=" + name);
}
}
/*
* 定义测试类
*/
publicclass Example01 {
publicstaticvoid main(String[] args) {
Developer d = new Developer(); // 创建一个研发部员工类对象
d.name = "小明"; // 为该员工类的name属性进行赋值
d.printName(); // 调用该员工的printName()方法
d.work(); // 调用Developer类继承来的work()方法
}
}