第一章节 - 继承
继承的概念
-
问题归纳与知识点总结
-
继承中的格式与代码体现 [JDK15新特性(可选继承)]
-
问题归纳与知识点总结
-
课堂练习
-
1.定义猫类Cat 狗类Dog 2.定义父类Animal 成员变量:String name/int age 成员方法withPeople(),在方法中输出陪伴人类. 3.使Cat类和Dog继承Animal类. 4.定义测试类创建Cat和Dog类的对象并赋值,打印成员变量后,调用withPeople()方法. 这只猫的名字叫:花花 年龄:2岁 这种狗的名字叫:大黄 年龄:5岁
-
-
-
继承中成员变量的访问特点
-
问题归纳与知识点总结
-
继承后子类的方法访问变量的顺序是什么?
- 就近原则 -> 谁离的近,就访问谁.
-
方法内部访问变量名 / this访问变量名 / super访问变量名的顺序是什么?
-
方法中访问变量名
-
1.先查看当前方法中是否有局部变量 -> 有局部变量,直接访问局部变量就可以 [就近原则] 2.如果说局部变量中没有呢 -> 就去会子类的成员变量位置寻找,如果有就访问. 3.如果子类的成员变量中也没有呢 -> 就去去父类的成员变量位置寻找,如果有就访问.
-
-
使用this访问变量名
-
1.先去子类的成员变量位置寻找 -> 如果有就访问 2.如果子类的成员位置没有 -> 就去父类的成员位置寻找.
-
-
使用super访问变量名
-
1.直接去父类的成员变量位置进行寻找 -> 如果有就访问,如果没有就[再尝试去父类的父类进行访问(不过多讨论)]
-
-
-
this表示什么? super表示什么?
- this表示本类对象的引用 super表示父类对象的引用.
-
-
-
继承中成员方法的访问特点
-
方法重写的概念与特点
-
问题归纳与知识点总结
-
方法重写有什么特点?
-
方法重写的形式是什么?
- 在子类中也定义相同的方法.
-
方法重写的快捷方式是什么?
-
Ctrl + O
-
如何校验子类的方法是重写父类的而不是自己独有的?
- 在方法上添加一个注解@Override
- @Override -> 注解 当前被这个注解标注的方法是否是一个有效的方法重写.注解是IDEA自动帮我们补充上的,即便不写,重写的方法只要符合规范,依然是一个方法重写.
- 在方法上添加一个注解@Override
-
方法重写与方法重载的区别是什么? 一毛钱关系没有.
- 方法重载:在同一个类中,方法名相同,参数列表不同的方法构成方法重载. (和返回值无关)
- 方法重写:在子类关系中,出现了方法声明一致的方法.
-
方法重写的规则是什么? [补充]
-
方法名称相同/参数列表相同 -> 必须一模一样的. 重写方法的时候有一些内容可以不一样,但是一切的前提符合规范: (1).public权限修饰符 public > protected > 默认(不写) > private 子类重写方法权限必须大于等于父类方法的权限. (2).子类重写方法的返回值可以和父类不一样. -如果父类方法的返回值void,则子类重写方法的返回值也必须是void. -如果父类方法的返回值是一个具体的类,子类方法的返回值可以是父类方法返回值的子类. Animal的子类Cat class Fu{ public Animal getAnimal(){ } } Zi extends Fu { @Override public Cat getAnimal(){ } } (3).子类的重写方法不可以抛出比父类方法级别更高的异常,父类方法不抛异常,子类重写方法也不允许抛异常(暂时说明)
-
-
-
-
手机类案例
1.老款手机: 打电话,发短信,显示来电(只显示电话号码) 2.新款手机: 打电话,发短信,显示来电(显示电话号码,显示头像,显示位置)
画图分析
代码实现
-
课堂练习
1.新建一个包,复制猫与狗练习中的三个类到新包下. 2.Cat类和Dog类重写withPeople()方法. Cat类在方法中输出:猫咪可以陪伴人类玩耍, Dog类在方法中输出:狗可以为主人看家护院. 3.定义测试类创建Cat和Dog类的对象并Set方法赋值,打印成员变量后,调用withPeople()方法.
-
继承中构造方法的访问特点
-
Java中继承的特点
第二章节 - 抽象类
-
抽象方法的概念以及抽象方法存在的意义
-
问题归纳与知识点总结
-
什么是抽象方法?
- 当父类中抽取出来的共性内容/方法没办法给出具体的实现逻辑的时候,就可以将这个方法封装为抽象方法 -> 没有方法体的方法.
-
抽象方法为什么会存在?
- 父类没办法给出具体的实现逻辑,但每个子类都有自己的实现方式.
-
抽象类的定义格式/抽象方法的定义格式?
-
抽象方法的定义格式
-
和正常的方法大部分都是一样的 返回值类型/方法名/方法参数.
1.抽象方法都通过关键字abstract修饰的 2.抽象方法没有方法体,没有{}.
-
-
抽象类的定义格式
-
和正常的类没有区别,但是抽象类中可以定义抽象方法 -> 抽象方法必须在抽象类中. public abstract 类名 {}
-
-
-
抽象类的使用
-
抽象类的常见问题[面试]
-
-
课堂练习
-
1.新建一个包,复制猫与狗练习中的三个类到新包下. 2.将Animal类中的withPeople()方法修改为抽象方法,并在Cat类和Dog中增强. 3.定义测试类创建Cat和Dog类的对象使用有参构造赋值,打印成员变量后,调用withPeople()方法.
-
-