1.概念:
继承是 Java 面向对象的三大重要特性之一,其作用是使用已存在的类的定义作为基础 建立新类,新类的定义又可以增加新的属性或新的方法,也可以使用已经存在的类的属性和方法,通俗的讲:子类继承父类,并拥有了父类中提供的所有公共的属性及方法。
2.关键字:extends
意义:当多个类属于同一类事物(物种),重复性的代码太多,代码臃肿,但是重复性的内容可归属于某一类事物,此时通过继承的形式来梳理逻辑关系及简化代码,但前提:用于简化代码的几个类属于同一类事物范畴内
例如:描述个人和描述人类–继承关系。
人类
public class Person {//人类
private String name;
private int age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
学生类
public class Student extends Person {//学生类
public void sx(){
System.out.println("学生");
}
public void task(){
System.out.println("好好学习");
}
}
老师类
public class Teacher extends Person {//老师类
public void sx(){
System.out.println("教师");
}
public void task(){
System.out.println("教书育人");
}
}
public class Exit {
public static void main(String[] args) {
Student student = new Student();
student.setName("李花朵");
student.setAge(12);
student.setSex("男");
student.sx();
student.task();
System.out.println("姓名:"+student.getName()+"、性别"+student.getSex()+"、年龄"+student.getAge());
Teacher teacher = new Teacher();
teacher.setName("张园丁");
teacher.setAge(26);
teacher.setSex("女");
teacher.sx();
teacher.task();
System.out.println("姓名:"+teacher.getName()+"、性别"+teacher.getSex()+"、年龄"+teacher.getAge());
}
}
其最终输出结果:
学生
好好学习
姓名:李花朵、性别男、年龄12
教师
教书育人
姓名:张园丁、性别女、年龄26
继承的限制:一个子类只能够继承一个父类,存在单继承局限。
继承的弊端:打破了封装性,对于某些类和方法以及属性不够严谨。