Java之继承、抽象类、接口、异常

继承

1、继承构造函数:
super(参数)

2、父类与子类的使用:
父类:class A;
子类:class B extends A;
使用:
A a;
B b;
a=new B(); //这里a使用的使用只用调用A(父)类中的方法,以及在B(子)类中重写A(父)类的方法

抽象类(具有扩展性)

1、抽象类的声明(abstract):
public abstract class A{}
2、抽象类中的方法的声明(只需要写方法名就行,不需要写方法体):
public abstract String get_name();
3、使用抽象类(extends):
抽象类的使用,类似于类的继承
但是只要继承抽象类后,子类就必须重写抽象类全部里的方法
例如:

1
2
3
4
5
6
7
8
9
public abstract class A{
public abstract void show();
}
public class B extends A{
@Override
public void show(){
System.out.println("这里是重写抽象类(A类)的方法体");
}
}

接口(用于解决单继承的方式)

1、接口的声明(interface 只写方法,不写方法体):
public interface A{
public void show();
public abstract void show2();
}
2、接口的使用(implements):
public class B implements A{
@Override
public void show(){
System.out.println(“这里是重写A类的方法体”);
}
@Override
public void show2(){
System.out.println(“这里是重写A类的方法体”);
}
}

抛出异常

1、自定义抛出异常(继承于Exception):
public class AException extends Exception{
//包含构造函数,toStirng方法
}
2、使用异常:
在另一个类中的某一个方法(判断是否符合标准)
public void B(int a) throws AException{
if(a<0){
throw new AException();
}
}
表示在使用这个方法的时候需要try catch

例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
DangerException.java
public class DangerException extends Exception {
String message;
public DangerException() {
message = "危险品!";
}
public void toShow() {
System.out.print(message+" ");
}
}
Goods.java
public class Goods {
boolean isDanger;
String name;
public void setIsDanger(boolean boo) {
isDanger = boo;
}
public boolean isDanger() {
return isDanger;
}
public void setName(String s) {
name = s;
}
public String getName() {
return name;
}
}
Machine.java
public class Machine {
boolean isDanger;
String name;
public void setIsDanger(boolean boo) {
isDanger = boo;
}
public boolean isDanger() {
return isDanger;// 【代码1
}
public void checkBag(Goods goods) throws DangerException{
if(goods.isDanger==true)
throw new DangerException();
}
}
Check.java
public class Check {
public static void main(String args[]) {
Machine machine = new Machine();
String name[] ={"苹果","炸药","西服","硫酸","手表","硫磺"};
Goods [] goods = new Goods[name.length]; //检查6件物品
for(int i= 0;i<name.length;i++) {
goods[i] = new Goods();
if(i%2==0) {
goods[i].setIsDanger(false);
goods[i].setName(name[i]);
}
else {
goods[i].setIsDanger(true);
goods[i].setName(name[i]);
}
}
for(int i= 0;i<goods.length;i++) {
try { machine.checkBag(goods[i]);
System.out.println(goods[i].getName()+"检查通过");
}
catch(DangerException e) {
e.toShow();//【代码2】 e调用toShow()方法
System.out.println(goods[i].getName()+"被禁止!");
}
}
}
}
Fork me on GitHub