第七周总结&第五次实验报告
实验五 类的继承
一、 实验目的
- (1) 理解抽象类与接口的使用;
- (2) 了解包的作用,掌握包的设计方法。
二、 实验要求
- (1) 掌握使用抽象类的方法。
- (2) 掌握使用系统接口的技术和创建自定义接口的方法。
- (3) 了解 Java 系统包的结构。
- (4) 掌握创建自定义包的方法。
三、 实验内容
(一)抽象类的使用
- 设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。 继承该抽象类定义三角型、矩形、圆。 分别创建一个三角形、矩形、圆存对象,将各类图形的面积输出。
注:三角形面积s=sqrt(p(p-a)(p-b)*(p-c)) 其中,a,b,c为三条边,p=(a+b+c)/2
实验过程
package demo1;
public abstract class Xingzhuang {
public abstract double area();
}
package demo1;
public class Delta extends Xingzhuang {
private double a, b, c;
public double getA() {
return a;
}
public void setA(double a) {
this.a = a;
}
public double getB() {
return b;
}
public void setB(double b) {
this.b = b;
}
public double getC() {
return c;
}
public void setC(double c) {
this.c = c;
}
public Delta(double a,double b,double c) {
this.a = a;
this.b = b;
this.c = c;
}
public double area() {
double p;
p = (this.a + this.b + this.c)/2;
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
}
}
package demo1;
public class Rectangle extends Xingzhuang {
private double length, high;
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double getHeight() {
return high;
}
public void setHeight(double height) {
this.high = height;
}
public Rectangle(double length, double high) {
this.high = high;
this.length = length;
}
public double area() {
return this.high * this.length;
}
}
package demo1;
public class Circle extends Xingzhuang {
private double r;
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
public Circle(double r) {
this.r = r;
}
public double area() {
return Math.PI * Math.pow(this.r, 2);
}
}
package demo1;
public class Test {
public static void main(String[] args) {
Xingzhuang san = new Delta(3,4,5);
System.out.println("三角形面积为:"san.area());
Xingzhuang ju = new Rectangle(4,5);
System.out.println("矩形面积:"ju.area());
Xingzhuang circle = new Circle(6);
System.out.println("圆的面积为:"circle.area());
}
}
实验结果
2.编程技巧
- (1) 抽象类定义的方法在具体类要实现;
- (2) 使用抽象类的引用变量可引用子类的对象;
- (3) 通过父类引用子类对象,通过该引用访问对象方法时实际用的是子类的方法。可将所有对象存入到父类定义的数组中。
(二)使用接口技术
1定义接口Shape,其中包括一个方法size(),设计“直线”、“圆”、类实现Shape接口。分别创建一个“直线”、“圆”对象,将各类图形的大小输出。
实验过程
package demo2;
public interface Shape {
public double size();
}
package demo2;
public class Steep implements Shape {
private double length;
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public Steep(double length) {
this.length = length;
}
public Steep() {
}
public double size() {
return this.length;
}
}
package demo2;
public class Circle implements Shape {
private double r;
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
public Circle(double r) {
this.r = r;
}
public Circle() {
}
public double size() {
return Math.PI * Math.pow(this.r, 2);
}
}
package demo2;
public class Test {
public static void main(String[] args) {
Shape steep = new Steep(8);
Shape circle = new Circle(3);
System.out.println("直线的长度为:"steep.size());
System.out.println("圆的面积为:"circle.size());
}
}
实验结果
- 编程技巧
(1) 接口中定义的方法在实现接口的具体类中要重写实现;
(2) 利用接口类型的变量可引用实现该接口的类创建的对象。
总结
本次实验让我理解了抽象类,还有对象的多态,以及接口,熟练的使用了包
第七周总结
本周主要讲了抽象类与接口的应用,object类。讲了异常的处理,捕获异常,throws关键字,Exception和RuntimeException
抽象类与接口的应用
抽象类主要是提供模板作用,接口主要是制定标准。
抽象类中可以定义多个内部抽象类,接口中可以定义多个内部接口。
抽象类与接口之间的关系
一个类不要去继承一个已经实现的类,要么继承抽象类,要么实现接口,如果接口和抽象类都可以使用,那么优先使用接口,避免单继承局限。
Object类
object类是Java中最为常用的一个系统类,利用object类可以实现参数的统一。java中object是所有类的父类, 没有明显的继承,那就是object的子类。
tostring打印对象时使用,可以覆写tostring,这样调用tostring就是子类覆写过的。
object类中提供的equals方法默认比较的是地址
捕获异常
如果不处理异常,那么程序可能会中断执行,造成不必要的损失
finall块可以省略,那么程序会执行try-catch之后的语句
throws关键字
throws关键字主要就是抛出异常,把异常的处理抛给,函数调用出,进行异常的捕获和处理
Exception和RuntimeException
Exception在程序中必须要进行异常捕获,RuntimeException可以不进行异常捕获,那么异常直接给JVm进行处理。