面向对象特征之二:继承性
1.继承性的理解
生活上:财产继承、颜值继承 代码层面 自上而下:定义一个类A,在定义另一个类B时,发现类B的功能与类A相似,考虑类B继承于类A 自下而上:定义了类B,C,等,发现B、C有类似的属性和方法,则可以考虑将相同的属性和方法进行抽取, 封装到类A中,让类B、C继承类A,同时B、C中的相同的功能就看可以删除了
2.继承性的好处
继承的出现减少了代码的冗余,提高了代码的复用性 继承的出现,更便于功能的扩展 继承的出现让类于类之间产生了is-a的关系,为多态的使用提供了前提 -继承描述事物之间的所属关系,这种关系时:is-a的关系。可见,父类更通用、更一般,子类更具体 注意:不要仅为了其他类中某个功能而去继承
3.继承的格式
class A{ //属性、方法 } class B extends A{
}
继承中的基本概念 类A:父类、superClass、超类、基类 类B:子类、subClass、派生类
4.有了继承性以后
子类就获取到了父类中声明的所有属性和方法 但是,由于封装性的影响,可能子类不能直接调用父类中的属性或方法 子类在继承父类以后,还可以扩展自己特有的功能(体现:增加自己特有的属性或方法) 子类和父类的理解:要区别于集合和子集 不要为了继承而继承,在继承之前,判断一下是否有is-a的关系
5.默认的父类:
java中声明的类,如果没有显示的声明其父类,则默认继承于java.lang.Object
6.补充说明 Java支持多层继承(继承体系) >直接父类、间接父类 一个父类可以有多个子类,一个子类只能有一个父类 Java只支持单继承,不支持多重继承
java中的子父类的概率是相对的
Person类(父类)
package Oop2.atguigu03_extends;
public class Person {
//属性
String name;
private int age;
public void eat(){
System.out.println("人吃饭");
}
public void sleep(){
System.out.println("人吃饭");
}
public void show(){
System.out.println("age:"+age);
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Student类(子类)
package Oop2.atguigu03_extends;
public class Student extends Person{
//属性
// String name;
// int age;
String school;
//
public void eat(){
System.out.println("人吃饭");
}
public void sleep(){
System.out.println("人吃饭");
}
public void study(){
System.out.println("学生学习");
}
public void show1(){
// System.out.println("age:"+age);
System.out.println("age:"+getAge());
}
}