这几天学习了类的继承和重写
通过这几天的学习发现通过类的继承和重写解决了以前编写程序过程中的很多问题我们先来说说继承
在早期的学习中,一个类中中会有很多的属性还有方法
比如一个简单的例子
学生的属性有姓名、年龄、身高、学习成绩,而他的方法有吃饭、睡觉、娱乐还有学习
医生的属性有姓名、年龄、身高、职称等级,而他的方法有吃饭、睡觉、娱乐还有看病
由此我们可以看出来,学生和医生虽然是两个不同的类
但是他们却有很多相同的属性以及方法
假如此时我们还有其他的类,比如老师、工人、司机等等......
那我们又要重新去定义每个类中的各种属性以及方法
这样一来,内容繁琐而且非常的耗时
但是我们仔细一看就会发现
在这些类中,他们有很多属性和方法是一样的
比如说他们属性中的姓名、年龄、身高以及他们方法中的吃饭、睡觉、娱乐这一些
所以在此,我们可以先定义一个人这个类
他的属性有姓名、年龄、身高而他的方法有吃饭、睡觉、娱乐
然后我们让学生、医生通过关键词extends继承人这个类
格式:public class 子类名 extends 父类名{…………}
但要注意的是,一个父类可以拥有多个子类
但一个子类却只能拥有一个父类
同时在访问权限修饰符的限制下继承又有诸多的规则
在访问权限修饰符public下在当前类、同一包下、不同包下的子类、不同包的非子类都可以使用
在访问权限修饰符protected下相对public少了不同包的非子类
在访问权限修饰符(缺省)下相对protected少了不同包下的子类
在访问权限修饰符private最少,只能在当前内中访问
这样一来,在不同的访问权限修饰符子类就继承了父类中相对应的的属性和方法了(注:在后面会讲到的构造方法不会被继承)
而通过这样一个过程,以前繁琐的操作过程都将被简化接下来我们再说说重写
我们在上面都说了,学生这个类
他属性有姓名、年龄、身高、学习成绩,而他的方法有吃饭、睡觉、娱乐还有学习
但在现实生活中,学生又分为小学生、初中生、高中生和大学生
虽然他们属性中的的姓名、年龄、身高、学习成绩
以及方法中的吃饭、睡觉、娱乐定义可能可能相同
但是他们的学习的方法却不尽相同
所以在这里我们就要用到重写了
当我们定义小学生、初中生......
的时候我们再对学生这个类中学习的方法进行重写
但在这里我们需要注意的是方法名相同但参数不同
在之后方法调用时调用的是同一个方法,而根据参数来决定调用的是哪一个类这就是我所理解的类的继承和重写......