CGBTN2109-DAY09复习总结

Posted 程序媛 泡泡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CGBTN2109-DAY09复习总结相关的知识,希望对你有一定的参考价值。

DAY09 复习

1 面向对象之多态

1. 前提:继承+重写
2. 口诀1:父类引用指向子类对象

解释:父类类型的引用类型变量保存的是子类类型的对象的地址值

3. 口诀2:编译看左边,运行看右边

解释:编译时要看父类是否定义了这个资源,运行时使用的是子类的功能

4. 资源使用情况
  1. 成员变量使用的是父类的
  2. 成员方法使用的是父类的方法定义,子类的方法体
  3. 如果多态对象调用的是子类没有重写过的方法,方法定义与方法体使用的都是父类的,所以这个不符合多态的前提,直接使用纯纯的父类对象调用即可
  4. 静态资源属于类资源,随着类的加载而加载,只会加载一次,优先于对象进行加载,可以通过类名直接调用,被全局所有对象共享,所以静态不存在重写的现象,在哪个类定义,就属于哪个类的资源
  5. 我们现在学习的多态,把自己看作是父类类型,参考“花木兰替父从军”

2 异常

1. 异常的继承结构

异常层次结构中的根是Throwable
Error:目前我们编码解决不了的问题
Exception:异常
编译异常:未运行代码就报错了,强制要求处理
运行时异常:运行代码才报错,可以通过编译,不强制要求处理

2.异常的解决方案

1. 捕获处理try-catch–自己解决

异常捕获处理的格式:

 try{
   可能会抛出异常的代码
 }catch(异常的类型 异常的名字){
    万一捕获到了异常,进行处理的解决方案
 }
  1. try-catch结构可以嵌套,如果有多种异常类型需要特殊处理的话
  2. 使用多态的思想,不论是什么子异常,统一看作父类型Exception
    做出更加通用的解决方案,甚至可以只写这一个
2.向上抛出throws–交给别人解决

异常抛出的格式:
在方法的小括号与大括号之间,写:throws 异常类型
如果有多个异常,使用逗号分隔即可

private static void method3() throws ArithmeticException,InputMismatchException,Exception{ }

private static void method3() throws Exception{ }
  1. 如果一个方法抛出了异常,那么谁来调用这个方法,谁就需要处理这个异常,这里的处理也有两种方案:捕获解决 或者 继续向上抛出
  2. 不能直接把异常抛给main(),因为调用main()是JVM,没人解决了,该报错还报错,所以我们一般会在main()调用之前将异常解决掉

3. 抽象

1.抽象类

  1. 被关键字abstract修饰的类是抽象类
  2. 一旦一个类中包含了抽象方法,那么这个类必须被声明成一个抽象类
  3. 抽象类中的方法不做限制,非常自由:全普 / 全抽 / 半普半抽
  4. 抽象类不可以实例化–创建对象
  5. 抽象类有构造方法,它自己不用,但是为了子类创建对象时调用
  6. 如果一个子类继承了抽象父类,那么有两种解决方案:
    1)作为一个抽象子类:不实现/实现部分抽象父类的抽象方法,躺平
    2)作为一个普通子类:需要实现抽象父类的全部抽象方法,还债

2 抽象方法

  1. 被关键字abstract 修饰的方法就是抽象方法
  2. 抽象方法没有方法体{ },直接以分号结束

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复习总结的主要内容,如果未能解决你的问题,请参考以下文章

CGBTN2109-DAY07总结复习

CGBTN2109-DAY17总结复习

CGBTN2109-DAY18复习总结

CGBTN2109-DAY05总结复习

CGBTN2109-DAY04总结复习

CGBTN2109-DAY12总结复习