ok了家人们,今天学习了面向对象的继承,话不多说让我们看看怎么个事。
我们先把昨天学 面向对象-封装 的温习一下,来个例子
1,综合案例
做一个关于学生的随机点名器
定义了两个变量,name和age,给他们封装一下。
1,我们在main用了键盘录入方法,用于录入学生的数据,
2,定义数组,定义了一个学生类(student)类的数组,
3,for循环,方便录入学生数据,我们又创建一个类名student,用于接收数组的数据
4,定义随机数Random,用变量index去接收他,接收数组数据,打印结果。
ok我们进入今天学习的内容。
1,继承
1.1 继承的概念
1.2 代码中的继承(extend)
我们在父亲(Father)类,定义了三个属性,name,age和sex,定义了三个方法
wash(),cook(),sleep(),
我们让儿子(Son)类继承他,
继承他之后,我们就可以调用父亲类了的数据了,打印输出看下结果。
这就是面向对象-继承的基本使用了
2 继承的注意事项
Java中的类只能单继承,不能多继承,(一个类只能有一个父类)
不要为了继承而继承,一定要满足什么是什么的关系
2.1 继承后私有成员的访问规则
父类的私有成员不能被直接访问
我们在Perosn定义了,一个私密方法,一个私密变量。
让子类继承他,
当我们子类调用父类数据的时候均有报错,
2.2 继承后非私有成员的访问规则
当通过子类访问非私有成员时,先在子类中找,如果找到就使用子类的,找不到就继续去父类中找。
父类和子类定义了同名的方法,我们在main方法上运行看一下
可以看到,我们调用了方法之后,是输出的子类的方法
2.3 继承后构造方法的访问规则
构造方法的名字是与类名一致的。所以子类是无法继承父类构造方法的。
2.4 方法重写(Override)
方法重写 :子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,也称为重写或者复写。声明不变,重新实现。
方法重载:在同一个类中,方法名相同,参数列表不同
重写的注意事项:
1.方法重写一定要是父子类关系
2.方法重写要求返回值类型,方法名,参数列表要相同
3.子类重写父类的方法,要求子类重写方法的访问权限大于或者等于父类方法的权限
权限修饰符: public > protected > 默认(空) > private
我们上个例子
父类写了三个方法
子类继承
一样的方法名,我们直接用个super.run();
这个用法可以在你以后更新数据时直接使用。
3,每日作业
1,定义猫类Cat。属性:毛的颜色color,品种breed。行为:吃饭eat(),抓老鼠catchMouse()定义狗类Dog。属性:毛的颜色color,品种breed。行为:吃饭(),看家lookHome()要求:1.按照以上要求定义Cat类和Dog类,属性要私有,生成空参、有参构造,set和get方法2.定义测试类,在main方法中创建该类的对象并给属性赋值(set方法或有参构造方法)3.调用成员方法,打印格式如下:
根据题意,定义猫类Cat的属性,封装,定义两个方法。
狗类也是如此。
我们用有参方法去写
1,创建对象,录入数据
2,调用方法
3,输出
2,继承-创建类描述学生、老师;需求:1.学生和老师都具有的属性:姓名;性别;年龄;2.学生具有的行为:吃饭;睡觉;学习;其中,调用学习功能能够输出一句话:xxx在学习Java; 3.老师具有的行为:吃饭;睡觉;教学;其中,调用教学功能能够输出一句话:xxx在教Java;
创建老师类对象,封装,定义一个方法
学生类继承
这里用了两个方法,一个无参和一个有参方法,
1,创建对象,录入数据
2,setName录入数据
3,调用teach方法,
4,打印输出
3,继承-需求:定义类描述老张和小张,其中小张是老张的儿子,二者都有姓名、性别、年龄、地址等属性,都具有挣钱养家的功能,老张通过种地养家,小张通过写代码挣钱养家
根据题意,创建一个老张和小张类
小张类继承了老张类,并写了一个方法。
这题也是分别用了无参和有参方法,
ok了家人们明天见。