当前位置:网站首页>异常+abstract

异常+abstract

2020-11-07 23:07:51 Roy01

1.throws

抛出异常,谁调用谁处理
在方法后声明异常 方法名() throws 异常类型

public class Test1_Exception {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
//        method();//暴露异常
        try {
            method2();
        } catch (ArithmeticException e) {
            // TODO Auto-generated catch block
            System.out.println("除数不为0");
        }
        
    }
    public static void method2 () throws ArithmeticException{
        int a=5;
        int b=0;
        System.out.println(a/b);
    }
    public static void method() {
        // TODO Auto-generated method stub
        int a=5;
        int b=0;
        System.out.println(a/b);
    }

}

2.abstract

被abstract修饰的方法称为抽象方法
抽象方法可以没有方法体;
一个类中存在抽象方法,他就是抽象类
抽象类不允许实例化
子类继承抽象父类,要么实现父类全部的抽象方法,要么它被定义为一个抽象类

public class test2_Abstract {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Animal cat=new Cat();
        cat.eat();
        cat.sleep();
//        Animal b=new Dog();//抽象类不能实例化
    }

}
//当一个类中存在抽象方法,那么这个类就是抽象类
abstract class Animal{
    //抽象方法可以没有方法体
    public abstract void eat();
    public void sleep() {
        System.out.println("呼呼大睡");
    }
}
//当一个类继承抽象类,要么重写抽象类的抽象方法,要么他也是一个抽象类
abstract class dog extends Animal{
    
}
class Cat extends Animal{

    @Override
    public void eat() {
        // TODO Auto-generated method stub
        System.out.println("猫吃鱼");
    }
    public void sleep() {
        System.out.println("呼呼大睡+++++");
    }
    
}

3.abstract的用法

抽象类中可以有构造方法,抽象类虽然自己不可以实例化,但是它的子类实例化,需要父类的无参构造

ublic class Test3_UseAbstract {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Aniaml2 a=new dog2();
        
    }

}
abstract class Aniaml2{
    public Aniaml2() {
        System.out.println("父类的构造方法");
    }
}
class dog2 extends Aniaml2{

    public dog2() {
        super();
        System.out.println("子类的构造方法");
        // TODO Auto-generated constructor stub
    }
    
}

抽象类中可以存在变量和常量,子类继承抽象类,可以修改变量,不可以修改常量

public class Test4_UseAbstract2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Animal3 dog3=new Dog3();
        dog3.name="泰迪";
        System.out.println(dog3.name);
//        dog3.MAX_VLAUE=18;
        System.out.println(dog3.MAX_VLAUE);
    }

}
abstract class Animal3{
    String name="大黄";
    public static final byte MAX_VLAUE=127;
    
}
class Dog3 extends Animal3{
    
}

抽象类中可以都为普通方法,抽象类不可以实例化
抽象类可以存在普通方法和抽象方法
子类继承抽象类,要么重写抽象类的所有抽象方法,要么定义为一个抽象类。子类在没有重写父类普通方法时访问的是父类的普通方法,重写后访问的是子类的重写方法。

public class Test5_UseAbstract3 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Animal4 a=new Dog4();
        a.sleep();//普通方法--重写前用父类的,重写后用子类的
        a.eat();//抽象方法--用了父类的方法声明,子类的方法体
        a.game();//抽象方法--用了父类的方法声明,子类的方法体
    }

}
abstract class Animal4{
    public void sleep() {
        System.out.println("sleep()...");
    }
    public abstract void eat();
    public abstract void game();
}
class Dog4 extends Animal4{

    @Override
    public void eat() {
        // TODO Auto-generated method stub
        System.out.println("eat()...");
    }

    @Override
    public void game() {
        // TODO Auto-generated method stub
        System.out.println("game()...");
    }
    
}
abstract class Cat4 extends Animal4{
    @Override
    public void eat() {
        // TODO Auto-generated method stub
        System.out.println("eat222()...");
    }


}

abstact实例

--需求:

    具体事物:培优班老师,高手班老师
    共性:备课 / 讲课
    测试:创建多态对象测试
public class Test6_Design {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Teacher cGBTeacher=new CGBTeacher();
        Teacher actTeacher=new ActTeacher();
        cGBTeacher.ready();
        cGBTeacher.teach();
        actTeacher.ready();
        actTeacher.teach();
    }

}
abstract class Teacher{
    public abstract void ready();
    public abstract void teach();
}
class CGBTeacher extends Teacher{

    @Override
    public void ready() {
        // TODO Auto-generated method stub
        System.out.println("培优班老师 准备 电商项目");
    }

    @Override
    public void teach() {
        // TODO Auto-generated method stub
        System.out.println("培优班老师 讲 电商项目");
    }
    
}
class ActTeacher extends Teacher{

    @Override
    public void ready() {
        // TODO Auto-generated method stub
        System.out.println("高手班老师 准备手写框架");
    }

    @Override
    public void teach() {
        // TODO Auto-generated method stub
        System.out.println("高手班老师 讲加强部分"); 
    }
    
}

版权声明
本文为[Roy01]所创,转载请带上原文链接,感谢
https://segmentfault.com/a/1190000037759834