CGBTN2110-DAY09总结复习
Posted 程序媛 泡泡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CGBTN2110-DAY09总结复习相关的知识,希望对你有一定的参考价值。
DAY09 复习
1 异常
1. 异常的继承结构
异常层次结构中的根是Throwable
Error:目前我们编码解决不了的问题
Exception:异常
编译异常:未运行代码就报错了,强制要求处理
运行时异常:运行代码才报错,可以通过编译,不强制要求处理
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)普通子类:实现抽象父类中全部的抽象方法 - 抽象类不能实例化
- 抽象类有构造函数的,但是不是为了自己使用,为了子类super()调用
- 抽象类可以定义成员变量/成员常量
- 抽象类中可以定义全普/全抽/半普半抽
- 如果一个类不想被外界实例化,可以把这个类声明成抽象类
2 抽象方法
- 被关键字abstract 修饰的方法就是抽象方法
- 抽象方法没有方法体{ },直接以分号结束
4. 练习案例1:
package cn.tedu.exec;
/*本类用于面向对象综合设计案例*/
public class DesignTeacher {
}
//抽取所有类的共性功能,向上形成父类Teacher
abstract class Teacher{
//既然父类中的方法一定会被子类重写,那可以把父类中的方法声明成抽象方法
//抽象父类去制定规则,实际干活的交给子类
public abstract void ready();
public abstract void teach();
}
//1.创建培优CGB老师类
//业务:主打互联网架构与微服务
class CGBTeacher extends Teacher{
@Override
public void ready() {
System.out.println("正在备课互联网技术");
}
@Override
public void teach() {
System.out.println("正在讲课互联网技术");
}
}
//2.创建高手加薪班老师类
//主打:基础加强 框架加强 高新技术
class ACTTeacher extends Teacher{
@Override
public void ready() {
System.out.println("正在备课基础加强");
}
@Override
public void teach() {
System.out.println("正在授课基础加强");
}
}
//3.创建一个抽象子类,只实现抽象父类中的一个抽象方法
abstract class SCDTeacher extends Teacher{
@Override
public void ready() {
System.out.println("正在研发中...");
}
}
5 练习案例2:
- 定义父类小鸟类Bird :
腿legNumbers的数量为2
下蛋eggNumbers数量可以自定义
拥有飞行fly()功能 下蛋layEggs()功能
- 定义子级鸽子类Pigeon:
它既会飞,也会下蛋
- 定义子级燕子类Swallow:
它既会飞,也会下蛋,还有自己的特有功能筑巢makeNest()
package cn.tedu.exec;
/*本类用作OOP综合案例*/
public class TestAnimal {
public static void main(String[] args) {
//11.创建鸽子类对象
Pigeon p = new Pigeon();
System.out.println(p.LEG_NUMBERS);//2
System.out.println(p.eggNumbers);//0,还是父类的默认值
p.layEggs();//鸽子的下蛋数量为:2个
p.fly();//小鸟飞呀飞~
//12.创建燕子类的对象
Swallow s = new Swallow();
System.out.println(s.LEG_NUMBERS);//2
System.out.println(s.eggNumbers);//6
s.fly();//继承过来的方法
s.layEggs();//实现了的抽象方法
s.makeNest();//自己的特有方法
}
}
//1.定义父类小鸟类
abstract class Bird{
//2.定义小鸟类中的成员常量,腿的数量为2
final int LEG_NUMBERS = 2;
//3.定义小鸟类中的成员变量,下蛋的数量
int eggNumbers;
//4.定义小鸟类中的普通方法
public void fly(){
System.out.println("小鸟飞呀飞~");
}
//5.定义小鸟类中的抽象方法
public abstract void layEggs();
}
//6.创建子类鸽子类
class Pigeon extends Bird{
//7.实现抽象父类中未实现的方法
@Override
public void layEggs() {
System.out.println("鸽子的下蛋数量为:2个");
}
}
//8.创建第2个子类燕子类
class Swallow extends Bird{
//7.1定义子类自己的成员变量
int eggNumbers = 6;
//7.2实现抽象父类中未实现的方法
@Override
public void layEggs() {
System.out.println("燕子的下蛋数量:"+eggNumbers);
}
//8.定义子类特有的方法
public void makeNest(){
System.out.println("燕子筑巢~");
}
}
5 练习案例2:动物设计代码2
- 定义父类昆虫类Insect:
腿的数量为6,产卵的数量可以自定义,拥有飞行的功能还有产卵spawn的功能
- 定义子级蚂蚁类Ant:
它既会飞,也会产卵
- 定义子级蜜蜂类Bee:
它既会飞,也会产卵,还有自己的特有功能制作蜂蜜makeHoney
package cn.tedu.review;
/*本类用于实现设计案例*/
public class TestAnimal {
public static void main(String[] args) {
//1.创建蚂蚁类对象
Ant a = new Ant();
System.out.println(a.LEG_NUMBERS);//6
System.out.println(a.eggNumbers);//0
a.fly();//使用继承过来的方法
a.sqawn();//使用子类实现的方法
//2.创建蜜蜂类对象
Bee b = new Bee();
System.out.println(b.LEG_NUMBERS);//6
System.out.println(b.eggNumbers);//200
b.fly();//使用继承过来的方法
b.sqawn();//使用子类实现的方法
b.makeHoney();//使用子类的特有功能
}
}
//1.创建抽象父类
abstract class Insect{
//2.定义成员常量
final int LEG_NUMBERS = 6;//腿的数目是6条
//3.定义成员变量
int eggNumbers;//产卵的数量
//4.定义一个普通方法--飞行功能
public void fly(){
System.out.println("昆虫的飞行功能~");
}
//5.定义抽象方法--产卵功能
public abstract void sqawn();
}
//6.创建普通子类蚂蚁类
class Ant extends Insect{
//7.添加父类中未实现的抽象方法
@Override
public void sqawn() {
System.out.println("蚂蚁产卵的数量为:300");
}
}
//8.创建普通子类蜜蜂类
class Bee extends Insect{
//9.定义子类自己的同名成员变量
int eggNumbers = 200;
@Override
public void sqawn() {
System.out.println("蜜蜂的产卵数量为:"+eggNumbers);
}
//10.定义子类自己的特有功能
public void makeHoney(){
System.out.println("蜜蜂正在产蜂蜜~");
}
}
以上是关于CGBTN2110-DAY09总结复习的主要内容,如果未能解决你的问题,请参考以下文章