在java中,面向对象的三大特点之一继承,那为什么java要有这个特性呢?
首先看二个类,一个是Worker一个是Student,
class Worker {
String name;
int age;
void work(){
System.out.println("work work");
}
}
class Student {
String name;
int age;
void study(){
System.out.println("study study");
}
}
分析这二个类中的代码我们发现,除了方法名字不一样,像属性名 都一样,说明这二个类有很多共同的点,那么此时如果把共同的封装起来,他们二个类用封装起来的类,或者说与封装起来的类建立某种联系即可,这时候继承就自然而然出现了我们的视野中,
那么好现在定义一个Person类去封装共同的点
class Person{
String name;
int age;
void work(){
System.out.println("");
}
}
那么这个时候Worker类和Student只要这么写就可以了
class Student extends Person{
}
class Worker extends Person{
}
如果想验证下可以这样 在main方法中创建各自对象打印出age的值
Student st =new Student();
System.out.println("Student::age="+st.age);
Worker w =new Worker();
System.out.println("Worker::age="+w.age);
结果:
Student::age=0
Worker::age=0
通过打印出来的结果发现 这二个类中虽然什么都没写 ,也没写age这个属性,但是打印出来了结果,都是因为继承了Person类,这就提高了代码的复用性,复用性体现在没必要把共同的东西在每个类中都去写,这样修改起来也方便,这就增强了代码的维护性
通过继承我们可以继承父类中的方法,如果每个子类具体业务不一样,可以自己去实现,
在java中只支持单继承,通过上面的我们也能想的到为什么,因为如果一个类继承几个类的话,遇到属性名一样的,怎么区分是继承那个类而来的,
java中支持多层继承比如 A继承B ,B继承C,C继承D
一般越到基类,越抽象,因为基类是从几个子类向上抽取而来的,具体的实现是子类去完成的任务,
一般在看开源的代码的时候,继承和接口使用的特别的多,所以说做android,java基础一定要打好,在看开源的代码,如果遇到一个类继承很多个类, 代码应该从顶层类看起,查看他有什么属性 方法等,因为这些都是提供给子类使用的,这样看整体就清晰很多