day10
接口
Q1:用java描述,会唱歌的厨子是个好老师
使用抽象类Person-Teacher继承Person类,并新建接口Cooking和Singing.
public abstract class Person {//抽象的Person类
int age;
String name;
int sex;
public abstract void showInfo() ;//showInfo方法
}
package day09;
/**
* 歌唱的接口
* @author Administrator
*
*/
public interface Sing {
void singing();//唱法
}
package day09;
/**
* 厨艺的接口
* @author Administrator
*
*/
public interface Cooking {
void fry();//炒菜
}
package day09;
/**
* 这个是描述会唱歌的厨子是一个老师的类
* @author Administrator
*
*/
public class Teacher extends Person implements Cooking,Sing{
String course;//教的科目
public void setInfo() {
super.age = 35;
super.name = "zhangsna";
super.sex = 0;
this.course = "数学";
}
@Override
public void showInfo() {
System.out.println("会唱歌的厨子是一个老师");
System.out.println(super.age);
System.out.println(super.name);
System.out.println(super.sex);
System.out.println(this.course);
}
@Override
public void singing() {
System.out.println(super.name + "老师擅长rap唱法");
}
@Override
public void fry() {
System.out.println(super.name + "老师拿手的菜是考田鼠");
}
}
抽象类是对于一类事物的高度抽象,其中既有属性也有方法,接口时对方法的抽象,也就是对一系列动作的抽象
当需要对一类事物抽象的时候,应该是使用抽象类,好形成一个父类
当需要对一系列的动作抽象,就使用接口,需要使用这些动作的类去实现相应的接口即可.
Exception
try()//使用try来括住一段有可能出现异常的代码段
catch(Exception e)//当不知道捕获的是什么类型的异常时,可以直接使用所有异常的父类Exception
当排查出错误代码后,可以使用 e.printStackTrace();打印出错误提示
也可以使用e.getMessage()来打印错误提示//要使用System.out
Finally
finally 可以写也可以不写,它是捕获异常的体系中最终一段会执行的.
throws
用throws在代码这抛出异常,在调用方去处理
抛出异常,用try catch捕获异常代码
package day10;
public class Test {
public static void main(String[] args) {
A a = new A();
try {
a.test();
}catch(Exception e){
e.printStackTrace();
}
}
}
class A {
int i;
public void test() throws Exception{//使用throws抛出异常,在调用方去捕获处理
A a = null;
System.out.println(a.i);
}
}
java.lang.NullPointerException
at day10.A.test(Test.java:20)
at day10.Test.main(Test.java:8)
打印后输出,空指针错误,代码问题出在第8行和第20行
子类重写父类方法不能抛出比被重写方法范围更大的异常类型//Exception 比 NullPionterException大
人工抛出异常
package day10;
public class Test {
public static void main(String[] args) throws Exception {
A a = new A();
a.test1(-100);
}
}
class A{
int age;
public void test1(int age) throws Exception {
if(age >=0 && age<= 150) {
this.age = age;
System.out.println("年龄是:" + this.age);
}else {
throw new Exception("年龄在0到150之间");
}
}
}