java笔记11:面小对象-构造方法和方法重写
构造方法
继承下构造方法的运行
- 实例化子类对象时 会先运行父类的构造
- 因为内存中子类对象中实际上包含 一个父类对象的引用 所有实例化子类对象前,要先实例化一个父类的对象
- 子类中如果没有无参构造 自动调用父类的无参构造 如果父类没有无参构造 会发生编译错误
- 子类中可以选择调用父类的构造方法 使用super关键字
- super关键字
- super就是方法中对象对自身父类的引用
2)super的使用
- 2.1)super.<属性>
父类和子类有同名属性时
super.调用父类的属性 - 2.2)super.<方法>(参数)
父类和子类有同名方法时
super.调用父类的方法 - 2.3)super(参数);
调用父类的构造方法
必须编写在子类构造方法中
的第一行
java中如果在构造方法中
没有编写调用哪个父类构造
默认super();
- 2.1)super.<属性>
- 向上造型
- 1)子类对象当做父类对象使用
就是向上造型
例:
Pet p=new Dog();
子类对象赋给父类引用
父类引用指向子类对象 2)向上造型之后的优缺点
- 2.1)缺点:
父类类型的引用
只能调用到父类中声明的成员
不能调用到子类中声明的成员 - 2.2)优点:
声明一个父类类型的数组
不同类型的子类对象可以放入
同一个父类数组中
统一管理
- 2.1)缺点:
- 方法重写(方法覆盖,override)
- 1)什么是方法重写
就是在子类中编写一个
和父类的某个方法一模一样的方法
(方法体除外) - 2)为什么需要方法在重写
向上造型后
使用父类引用可以调用到
子类重写后的方法
从而实现:父类引用调用子类方法 3)方法重写规则
- 3.1)必须相同的
方法名,参数列表
如果方法的返回值类型是void
或是基本数据类型,必须一致 3.2)可以不同的
- 返回值类型
返回值类型是引用数据类型
- 返回值类型
- 3.1)必须相同的
子类的返回值类型可以是
父类返回值类型的子类
2. 访问修饰符(oopday05讲)
子类重写方法的访问修饰符
不能比父类更严格
3. 方法抛出的异常(第二阶段讲)
子类抛出的异常
可以是父类抛出异常的子类
- 方法重载和方法重写
位置 方法名 参数 返回值 修饰符
重载 同类* 相同 不同 无关 无关
重写 子类 相同 相同 相同* 相同*
- 方法重载中所有同一个类 实际上是指同一个作用域
- 方法重载是编译期绑定
- 方法重写是运行期绑定
构造方法的快捷键
Alt+Shift+S~O
作业
继承下构造方法的运行
1) 创建Person类
有属性String name
int age
String gender
有无参构造和有参构造
定义Student,独有String grade属性
继承Person,编写无参和有参构造
使用super调用父类构造
定义Teacher,独有String major属性
继承Person,编写无参和有参构造
使用super调用父类构造
测试类中使用有参构造实例化两种对象
并输出信息
2) 在Person类中定义一个方法
show()输出Person类中的属性
Student类中重写父类的show方法
输出grade属性值
Teacher类中重写父类的show方法
输出major属性值
测试类中定义一个Person类型的数组
向这个数组中赋值Student和Teacher对象
遍历数组输出元素信息