面向对象思想的三大特征
封装性、继承性、多态性
二、继承性:
问题①:为什么有继承这个概念?
例如我们创建一个学生类(Student),教师类(Teacher),家长类(Parent),这三个类中都会有的属性:姓名、年龄、性别等等;这三个类中都会有的方法有:走路、吃饭、睡觉等等。如果创建完成这三个类,那么这些重复的属性和方法就会重复,这样显得代码不够高级,而且后期修改属性方法的话,要到每个类中去修改,做一些重复工作。能不能把这三个类中相同的方法属性进行提取,写到一个地方,然后每个类都能够拥有这样的属性和方法。也方便了后期的维护和修改。所以创建一个‘人’类(Person),让之前的三个类都和这个类有关系,都能使用Person类中的属性方法。我们把这种方便的操作起个名字,就叫它“继承”。
public class People {
public String name;
public int age;
public int sex;
public void walk(){}
public void eat(){}
public void sleep(){}
}
public class Student extends Person {
public static void main(String[] args) {
Student stu = new Student();
stu.name = "张三";
stu.walk();
}
}
问题②:为什么要引入继承性?(继承性的好处)
Ⅰ、减少了代码的冗余,提高了代码的复用性
Ⅱ、便于功能的扩展
Ⅲ、为之后多态性的使用,提供了前提
==>继承性的格式:
[修饰符] class A extends B { }
A:子类、派生类
B:父类、超类
问题③:子类继承了父类以后有哪些不用?
体现一:子类就获取了父类中声明的所有属性和方法
- 特别的,父类中声明为private的属性或方法,子类继承父类以后,仍然认为获取了父类中私的结构。只因为封装性的影响,使得子类不能直接调用父类的结构而已。
体现二:子类继承父类以后,还可以声明自己特有的属性和方法,实现功能的拓展