初学java,认知甚浅,粗陋之处,多多包涵。
java作为目前世界上最常用的编程语言,优点颇多,在此不做一一赘述,个人认为其面向对象的语言风格让编程语言更加的人性化和简易化,而java类中的核心——类,在我们使用中显得尤为重要,今天我们简单的看一看java中类的继承与多态。
类的继承,其关键字为extends,其书写格式为public class 子类名 extends 父类名。
正如其名字,继承的作用就是让子类拥有父类的一切成员函数和成员变量,举一个例子,我们定义了一个学生类,学生有其行为(成员函数)——学习,他也有自己的属性(成员变量)——名字,性别,性格,学分,成绩。。。。而我们生活中有各种各样不同而学生,有大学生,高中生,初中生,小学生,,,。我们在定义类的时候难道要一个一个的去定义么,这样我们会做许多重复的工作,所以为了提高我们代码的重用性,我们可以定义一个最基础的,拥有学生的一切性质的类,让其作为父类,让其他的大学生,初中生,高中生。。。去继承这个父类的一切,这样就可以大大减少我们编辑重复代码的时间,但是大学生,高中生,初中生,他们有着自己的特点,他们中也有父类中所没有的东西,而且可能其基础行为(成员函数),也有可能会改变,那这个时候我们应该怎么办呢?函数的重写与添加便可以帮助我们解决这些问题,函数在重写的时候其返回值类型,函数名,参数必须与父类相同,函数的添加就没有什么要求,直接些就好了。
而类的多态又是什么呢?我们设想这样一个场景,大学老师的资格不止可以教导大学生,教导高中生,初中生,小学生都是可以的,我们在老师的类中声明一种教导函数,他的参数是学生类的对象,那么一个大学老师的教导方法我们要写多少种?按照我们上面的思路,至少4种,参数分别是大学生,高中生,初中生,小学生,但是如果有1000种学生呢?我们还可以穷举么?当然不能,所以在这时我们引入多态的概念,因为学生的不同类型都有一个父类学生类,不同的学生类型只不过重写了其学习方法的函数而已,我们便可以在老师的教导函数中把参数设置成其父类,而在实际使用过程中会根据不同的学生类型自动的进行调整,这便是类的多态,我们可以这样理解,大学生,高中生都是学生,我用一个学生类的对象当参数,说明我可以教导学生,至于怎么教,看你实际上是一个什么学生就好了,系统自动识别。
浅陋之见,大神一笑了之就好,不必较真,如有指教,不胜荣幸。
java作为目前世界上最常用的编程语言,优点颇多,在此不做一一赘述,个人认为其面向对象的语言风格让编程语言更加的人性化和简易化,而java类中的核心——类,在我们使用中显得尤为重要,今天我们简单的看一看java中类的继承与多态。
类的继承,其关键字为extends,其书写格式为public class 子类名 extends 父类名。
正如其名字,继承的作用就是让子类拥有父类的一切成员函数和成员变量,举一个例子,我们定义了一个学生类,学生有其行为(成员函数)——学习,他也有自己的属性(成员变量)——名字,性别,性格,学分,成绩。。。。而我们生活中有各种各样不同而学生,有大学生,高中生,初中生,小学生,,,。我们在定义类的时候难道要一个一个的去定义么,这样我们会做许多重复的工作,所以为了提高我们代码的重用性,我们可以定义一个最基础的,拥有学生的一切性质的类,让其作为父类,让其他的大学生,初中生,高中生。。。去继承这个父类的一切,这样就可以大大减少我们编辑重复代码的时间,但是大学生,高中生,初中生,他们有着自己的特点,他们中也有父类中所没有的东西,而且可能其基础行为(成员函数),也有可能会改变,那这个时候我们应该怎么办呢?函数的重写与添加便可以帮助我们解决这些问题,函数在重写的时候其返回值类型,函数名,参数必须与父类相同,函数的添加就没有什么要求,直接些就好了。
而类的多态又是什么呢?我们设想这样一个场景,大学老师的资格不止可以教导大学生,教导高中生,初中生,小学生都是可以的,我们在老师的类中声明一种教导函数,他的参数是学生类的对象,那么一个大学老师的教导方法我们要写多少种?按照我们上面的思路,至少4种,参数分别是大学生,高中生,初中生,小学生,但是如果有1000种学生呢?我们还可以穷举么?当然不能,所以在这时我们引入多态的概念,因为学生的不同类型都有一个父类学生类,不同的学生类型只不过重写了其学习方法的函数而已,我们便可以在老师的教导函数中把参数设置成其父类,而在实际使用过程中会根据不同的学生类型自动的进行调整,这便是类的多态,我们可以这样理解,大学生,高中生都是学生,我用一个学生类的对象当参数,说明我可以教导学生,至于怎么教,看你实际上是一个什么学生就好了,系统自动识别。
浅陋之见,大神一笑了之就好,不必较真,如有指教,不胜荣幸。