题目一
(一)程序一接口练习
interface Speed {
void run();
}
class Cat implements Speed {
@Override
public void run() {
System.out.println("Cat run");
}
}
class Car implements Speed {
@Override
public void run() {
System.out.println("Car run");
}
}
public class CompleteDecoupling {
static void show(Speed s) {
s.run();
}
public static void main(String[] args) {
show(new Cat());
show(new Car());
}
}
运行结果截图:
题目二
(二)程序二内部类练习
class AClass {
AClass() {
System.out.println("AClasss");
}
}
interface AInterface {
int j = 2;
void show();
}
public class OuterClassSeven {
public AClass getObjectOne() {
return new AClass() {
};
}
public AInterface getObjectTwo() {
return new AInterface() {
@Override
public void show() {
System.out.println("AInterface");
}
};
}
public static void main(String[] args) {
OuterClassSeven outer = new OuterClassSeven();
outer.getObjectOne();
outer.getObjectTwo().show();
}
}
运行结果截图:
题目三
(三)异常处理练习:编写一个java application,命名为:TestTriangle.java
要求:
(1)写一个方法static boolean isTriangle(double a,double b,double c),判断三个参数是否能构成一个三角形。
(2)如果不能构成三角形,则抛出NotTriangleException异常(NotTriangleException类为自定义异常类),显示异常信息“a,b,c不能构成三角形”。
(3)如果可以构成三角形,则显示三角形三个边长。
(4)在main方法中调用isTriangle(double a,double b,double c),参数a,b,c从键盘得到。
源程序:
import java.util.Scanner;
class NotTriangleException extends Exception {
private String message;
public NotTriangleException() {
}
public NotTriangleException(String message) {
this.message = message;
}
@Override
public String toString() {
return message;
}
}
public class TestTriangle {
static boolean isTriangle(double a, double b, double c) throws NotTriangleException {
if ((a + b > c) && (a + c > b) && (b + c > a)) {
System.out.println("构成的三角形三边分别为:" + " a=" + a + " b=" + b + " c=" + c);
return true;
} else {
throw new NotTriangleException("a,b,c不能构成三角形");
}
}
public static void main(String[] aSrgs) {
System.out.println("请输入三角形的三边");
Scanner s = new Scanner(System.in);
double a = s.nextDouble();
double b = s.nextDouble();
double c = s.nextDouble();
try {
isTriangle(a, b, c);
} catch (NotTriangleException e) {
System.out.println(e);
}
}
}
运行结果截图:
实验小结
(一)总结出使用接口、内部类的好处
接口:
- 面向抽象编程,不面向具体编程,降低程序的耦合度,提高程序的扩展力。
- 这种编程思想符合OCP(对扩展开放对修改关闭)原则。
内部类:
1)内部类可以很好地实现隐藏
一般非内部类,是不允许有private与protected权限的,但内部类可以。
2)内部类拥有外部类的所有元素的访问权限
3)可以实现多重继承
4)可以避免修改接口而实现同一个类中两种同名方法的调用