第七周总结&第五次实验报告

实验五 类的继承

一、 实验目的

  • (1) 理解抽象类与接口的使用;
  • (2) 了解包的作用,掌握包的设计方法。

二、 实验要求

  • (1) 掌握使用抽象类的方法。
  • (2) 掌握使用系统接口的技术和创建自定义接口的方法。
  • (3) 了解 Java 系统包的结构。
  • (4) 掌握创建自定义包的方法。

三、 实验内容

(一)抽象类的使用

  1. 设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。 继承该抽象类定义三角型、矩形、圆。 分别创建一个三角形、矩形、圆存对象,将各类图形的面积输出。
    注:三角形面积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. 编程技巧
    (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进行处理。

原文地址:https://www.cnblogs.com/xiao--liang/p/11651423.html