2022-07-21 第二组 刘禹彤 学习笔记
打卡第12天
今天继续学习面向对象
###学习内容
1.面向对象,继承
- 类与类之间的关系:1.属性关系
2.参数关系
3.继承关系
- extends:继承
在java中,继承是单继承,一个子类只能有一个直接父类,但可以有多个间接父类
extends后面只能写一个类
- 继承能干什么?
(1)访问权限修饰符:1.public
2.protected
3.默认的
4.private
(2) 继承父类的属性
(3) 继承父类的方法
创建子类对象时,父类先被实例化,再实例化子类:
(1)当一个类被实例化时,一定会先实例化他的直接和间接父类
(2)子类的构造器可以有多个,但是必须和父类的构造器形式上统一
super关键字:代表调用父类的结构(属性,方法,构造器)
面试题:this和super的区别?在子类中当使用super调用父类构造器时,super(age)必须是第一句话在子类中当使用this调用本类构造器时,this(name)必须是第一句话在构造器中,如果需要使用super或this调用其他构造器时只能二选一,而且必须是第一句话super指向父类,不代表任何对象this指向本类,代表当前类的对象,方法的调用者
2.方法的重写(覆写,覆盖 override)
- 子类可以重写父类的方法
- 方法的重写,我们可以利用到父类中方法的已经运算过的结果,在结果的基础上添加
- 方法的重写,体现的是继承的核心,就是为了扩展父类的功能
- 方法重写的规则:前提,继承与被继承的的关系
1.访问权限:重写的权限不能低于被重写的方法,开发中一般都是等于
2.返回值类型:重写的方法的返回值可以和被重写的方法不同,但必须是重写方法的子
类,开发中一般都是一样
3.方法名:必须相同
4.参数列表:参数类型,参数个数必须相同
5.抛出异常,重写的方法不能抛出比被重写的方法更大的异常
- 开发中如果要重写,基本上是一模一样,我们只改变方法体
###学习心得
今天主要学习了继承和方法的重写,听的效果比较好,还向老师咨询了不懂的地方,对前两天不太会的东西也逐渐明白了,相关类型的案例也有了一点思路,下午对之前的知识进行了整理,总体感觉不错。
###掌握程度:理解
相关案例;
person:
package b; public class Person { private String name; private String age; public Person() { } public Person(String name, String age) { this.name = name; this.age = age; } public String getName() { return name; } public Person setName(String name) { this.name = name; return this; } public String getAge() { return age; } public Person setAge(String age) { this.age = age; return this; } }
Ch01:
package b; public class Ch01 { private String name; private Integer Age; /* * this可以代表对象 * super代表不了对象 * */ public Ch01 info(String name, Integer age) { // Ch01 ch01 = new Ch01(); this.setName(name); this.setAge(age); show(this); return this; } public void show(Ch01 ch01){ } public static void main(String[] args) { Ch01 ch01 = new Ch01(); ch01 = ch01.info("abcd",20); System.out.println(ch01.getName() + ch01.getAge()); } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return Age; } public void setAge(Integer age) { Age = age; } }
运行结果: