一.继承问题的引出:
面向对象的第二大特征:继承性,继承的主要特点在于:可以扩充已有功能
继承问题的引出:所谓良好的代码:结构性合理、适合于维护、可重用性很高
下面定义俩个类:人类、学生类,传统代码如下:
class Person { private String name; private int age; public void setName(String name){ this.name = name ; } public void setAge(int age){ this.age = age; } public String getName(){ return this.name; } public int getAge(){ return this.age; } } class Student { private String name; private int age; private String school; public void setName(String name){ this.name = name ; } public void setAge(int age){ this.age = age ; } public void setSchool(String school){ this.school = school ; } public String getName(){ return this.name; } public int getAge(){ return this.age; } public String getschool(){ return this.school; } }
虽然类的概念可以解决结构性的问题,但是对于之前的代码可以发现总有重复的代码出现在程序中。并且可以进一步思考:认识一个更加广泛的定义范畴,而学生是一个相对狭小的定义范畴。
从另外一个角度来讲,学生应该包含人中的所有特点,且更广泛。
如果要想进行代码的重用,就要使用继承,继承的本质:在已有的结构上继续扩充而不是重新定义。