package cn.tedu.review.cn.tedu.oop;
import java.util.InputMismatchException;
import java.util.Scanner;
public class ExceptionDemo {
// public static void main(String[] args) throws Exception {
public static void main(String[] args) {
// method1();
// method2();//调用异常解决方案1 捕获处理,自己解决
f();
// method3(); //向上抛出交给调用者来解决
}
private static void f() {
try{
method3();
}catch(Exception e){
System.out.println("您的数据不对,请重新输入:");
}
}
// private static void method3() throws ArithmeticException, InputMismatchException{
private static void method3() throws Exception {
System.out.println("请输入您要计算的第一个整数");
int a = new Scanner(System.in).nextInt();//输入不匹配异常 InputMismatchException
System.out.println("请输入您要计算的第二个整数");
int b = new Scanner(System.in).nextInt();
System.out.println(a / b);// ArithmeticException算术异常
}
private static void method2() {
try {
System.out.println("请输入您要计算的第一个整数");
int a = new Scanner(System.in).nextInt();//输入不匹配异常 InputMismatchException
System.out.println("请输入您要计算的第二个整数");
int b = new Scanner(System.in).nextInt();
System.out.println(a / b);// ArithmeticException算术异常
} catch (ArithmeticException e) {
System.out.println("除数不能为0!");
} catch (InputMismatchException e) {
System.out.println("请输入规定的整数类型!");
} catch (Exception e) {
System.out.println("您的数据不对,请重新输入:");
}
}
private static void method1() {
System.out.println("请输入您要计算的第一个整数");
int a = new Scanner(System.in).nextInt();//输入不匹配异常 InputMismatchException
System.out.println("请输入您要计算的第二个整数");
int b = new Scanner(System.in).nextInt();
System.out.println(a / b);// ArithmeticException算术异常
}
}
请输入您要计算的第一个整数
12
请输入您要计算的第二个整数
13.3
您的数据不对,请重新输入:
特点
abstract 可以修饰方法或者类
被abstarct修饰的类叫做抽象类,被abstract修饰的方法叫做抽象方法
抽象类中可以没有抽象方法
如果类中有抽象方法,那么该类必须定义为一个抽象类
子类继承了抽象类以后,要么还是一个抽象类,要么就把父类的所有抽象方法都重写
多用于多态中
抽象类不可以被实例化
package cn.tedu.review.cn.tedu.oop;
public class AbstractDemo {
public static void main(String[] args) {
Animal a=new Pig();
a.eat();
a.play();
}
}
abstract class Animal{
public void eat(){
System.out.println("吃啥都行");
}
public abstract void play();
public abstract void fly();
}
class Pig extends Animal{
@Override
public void play() {
System.out.println("实现父类未实现的play()");
}
@Override
public void fly() {
System.out.println("实现父类未实现的方法2 fly()");
}
}
吃啥都行
实现父类未实现的play()
抽象类是否有构造方法?抽象类有构造方法
既然抽象类不能实例化,为什么有构造方法呢?
不是为了自己使用,而是为了子类创建对象时使用,即:super();
package cn.tedu.review.cn.tedu.oop;
public class AbstractDemo2 {
// Animal2 a=new Animal2(); 抽象对象不可以被实例化
public static void main(String[] args) {
Pig2 p = new Pig2();
}
}
abstract class Animal2 {
public Animal2() {
System.out.println("我是父类的构造方法");
}
}
class Pig2 extends Animal2 {
public Pig2() {
System.out.println("我是子类的无参构造");
}
}
我是父类的构造方法
我是子类的无参构造
抽象类中可以定义成员变量么?可以! * 抽象类中可以定义成员常量吗? 可以 * 抽象类中可以定义普通方法吗? 可以 * 抽象类中能否全是普通方法? 可以 * 如果抽象类中都是普通方法,为啥还要把这个类声明成抽象类,可以把普通类声明成抽象类 * 抽象类中能否全是抽象方法?--可以 * 如果一个类中含有抽象方法,这个类必须被声明成抽象方法。
如果一个子类继承了抽象父类,有两种处理方案: * 方案一:继续抽象,也就是作为抽象子类,不实现/实现部分抽象父类中的抽象方法 方案二:不再抽象,也就是作为普通子类,实现继承自父类的所有抽象方法 *
package cn.tedu.review.cn.tedu.oop;
public class AbstartDemo3 {
public static void main(String[] args) {
}
}
abstract class Animas{
int sum=100;
final String ANIMAS_NAME="小黄人";
public abstract void play();
public abstract void play2();
}
class Pig3 extends Animas{
@Override
public void play() {
}
@Override
public void play2() {
}
}
面向抽象编程:
package cn.tedu.review.cn.tedu.oop;
public class DesignTeacher {
public static void main(String[] args) {
CGBTeather ct = new CGBTeather();
SCDTeather st = new SCDTeather();
}
}
abstract class Teacher {
String name;//姓名
int id;//工号
public abstract void ready();
public abstract void teach();
}
class CGBTeather extends Teacher {
public void ready() {
System.out.println("备课电商项目");
}
public void teach() {
System.out.println("授课电商项目");
}
}
class SCDTeather extends Teacher {
public void ready() {
System.out.println("备课hadoop spark");
}
public void teach() {
System.out.println("授课hadoop spark");
}
}
class ACTTeacher extends Teacher {
@Override
public void ready() {
}
@Override
public void teach() {
}
}



