CGBTN2109-DAY09复习总结
Posted 程序媛 泡泡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CGBTN2109-DAY09复习总结相关的知识,希望对你有一定的参考价值。
DAY09 复习
1 面向对象之多态
1. 前提:继承+重写
2. 口诀1:父类引用指向子类对象
解释:父类类型的引用类型变量保存的是子类类型的对象的地址值
3. 口诀2:编译看左边,运行看右边
解释:编译时要看父类是否定义了这个资源,运行时使用的是子类的功能
4. 资源使用情况
- 成员变量使用的是父类的
- 成员方法使用的是父类的方法定义,子类的方法体
- 如果多态对象调用的是子类没有重写过的方法,方法定义与方法体使用的都是父类的,所以这个不符合多态的前提,直接使用纯纯的父类对象调用即可
- 静态资源属于类资源,随着类的加载而加载,只会加载一次,优先于对象进行加载,可以通过类名直接调用,被全局所有对象共享,所以静态不存在重写的现象,在哪个类定义,就属于哪个类的资源
- 我们现在学习的多态,把自己看作是父类类型,参考“花木兰替父从军”
2 异常
1. 异常的继承结构
异常层次结构中的根是Throwable
Error:目前我们编码解决不了的问题
Exception:异常
编译异常:未运行代码就报错了,强制要求处理
运行时异常:运行代码才报错,可以通过编译,不强制要求处理
2.异常的解决方案
1. 捕获处理try-catch–自己解决
异常捕获处理的格式:
try{
可能会抛出异常的代码
}catch(异常的类型 异常的名字){
万一捕获到了异常,进行处理的解决方案
}
- try-catch结构可以嵌套,如果有多种异常类型需要特殊处理的话
- 使用多态的思想,不论是什么子异常,统一看作父类型Exception
做出更加通用的解决方案,甚至可以只写这一个
2.向上抛出throws–交给别人解决
异常抛出的格式:
在方法的小括号与大括号之间,写:throws 异常类型
如果有多个异常,使用逗号分隔即可
private static void method3() throws ArithmeticException,InputMismatchException,Exception{ }
private static void method3() throws Exception{ }
- 如果一个方法抛出了异常,那么谁来调用这个方法,谁就需要处理这个异常,这里的处理也有两种方案:捕获解决 或者 继续向上抛出
- 不能直接把异常抛给main(),因为调用main()是JVM,没人解决了,该报错还报错,所以我们一般会在main()调用之前将异常解决掉
3. 抽象
1.抽象类
- 被关键字abstract修饰的类是抽象类
- 一旦一个类中包含了抽象方法,那么这个类必须被声明成一个抽象类
- 抽象类中的方法不做限制,非常自由:全普 / 全抽 / 半普半抽
- 抽象类不可以实例化–创建对象
- 抽象类有构造方法,它自己不用,但是为了子类创建对象时调用
- 如果一个子类继承了抽象父类,那么有两种解决方案:
1)作为一个抽象子类:不实现/实现部分抽象父类的抽象方法,躺平
2)作为一个普通子类:需要实现抽象父类的全部抽象方法,还债
2 抽象方法
- 被关键字abstract 修饰的方法就是抽象方法
- 抽象方法没有方法体{ },直接以分号结束
3 练习1
package cn.tedu.exec;
/*本类用于OOP综合练习1*/
public class TestAnimal {
public static void main(String[] args) {
//创建蚂蚁类的对象--子类对象
Ant a = new Ant();
//创建蜜蜂类的对象--子类对象
Bee b = new Bee();
a.fly();//调用子类的特有方法
a.layEggs();//调用子类继承的方法
b.makeHoney();//调用子类的特有方法
b.layEggs();//调用子类继承的方法
}
}
//1.抽象形成一个父类
abstract class Animal{
//2.创建属性
int legNumbers;//腿的数量
int eggNumbers;//下蛋的数量
//3.创建下蛋的功能
public abstract void layEggs();
}
//4.创建子类蚂蚁类
class Ant extends Animal{
//4.2添加子类的特有属性
int eggNumbers = 2;//蚂蚁一次产2个卵
//4.1创建子类的特有功能
public void fly(){
System.out.println("蚂蚁飞啦~");
}
//4.3添加子类重写的方法
@Override
public void layEggs(){
System.out.println("蚂蚁产卵的数量为:"+eggNumbers);
}
}
//5.创建子类蜜蜂类
class Bee extends Animal{
//5.2添加子类的特有属性
int eggNumbers = 10;//蜜蜂一次产10个卵
//5.1创建子类的特有功能
public void makeHoney(){
System.out.println("蜜蜂在产蜂蜜");
}
//5.3添加子类重写的方法
@Override
public void layEggs(){
System.out.println("蜜蜂产卵的数量为:"+eggNumbers);
}
}
以上是关于CGBTN2109-DAY09复习总结的主要内容,如果未能解决你的问题,请参考以下文章