第七周课程总结&实验报告(五)

第七周课程总结
一、抽象类与接口实例化
为抽象实例化

abstract class A{                                              //定义抽象类A
         public abstract void print();                     //定义抽象方法print()
}
class B extends A{                                           //子类通过继承抽象类
         public void print(){
              System.out.println("Hello World!!!");
      }
}
public class AbstractCaseDemo1{
   public static void main(String[] args){
     A a=newB();                                                  //通过子类为抽象类实例化
      a.print();                                                       //调用的方法是被子类覆写过的方法
     }
}

为接口实例化

interface A{                                                        //定义接口A
          public abstract void print();                      //定义抽象方法print()
}
class B implements A{                                       //子类实现接口
         public void print(){
               System.out.println("Hello World!!!");
     }
}
public class InterfaceCaseDemo1{
        public static void main(String[] args){
             A a=new B();                                          //通过子类为接口实例化
               a.print();
        }
}

抽象类与接口的区别

区别点 抽象类 接口
定义 包含抽象方法的类 抽象方法和全局常量的集合
组成 构造方法、抽象方法、普通方法、常量、变量 常量、抽象方法
使用 子类继承抽象类(extends) 子类实现接口(implements)
关系 抽象类可以实现多个接口 接口不能继承抽象类,但允许继承多个接口
常见设计模式 模板设计 工厂设计、代理设计
对象 都通过对象的多态性产生实例化对象
局限 抽象类有单继承的局限 接口没有单继承的局限
实际 作为一个模板 是作为一个标准或是表示一种能力
选择 如果抽象类和接口都可以使用的话,优先使用接口,因为避免单继承的局限
特殊 一个抽象类中可以包含多个接口,一个接口可以包含多个抽象类

实验报告(五)
实验四 类的继承
实验目的
理解抽象类与接口的使用;
了解包的作用,掌握包的设计方法。
实验要求
掌握使用抽象类的方法。
掌握使用系统接口的技术和创建自定义接口的方法。
了解 Java 系统包的结构。
掌握创建自定义包的方法。

实验内容
(一)抽象类的使用
设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。 继承该抽象类定义三角型、矩形、圆。 分别创建一个三角形、矩形、圆存对象,将各类图形的面积输出。
注:三角形面积s=sqrt(p(p-a)(p-b)*(p-c)) 其中,a,b,c为三条边,p=(a+b+c)/2
2.编程技巧
(1) 抽象类定义的方法在具体类要实现;
(2) 使用抽象类的引用变量可引用子类的对象;
(3) 通过父类引用子类对象,通过该引用访问对象方法时实际用的是子类的方法。可将所有对象存入到父类定义的数组中。
(二)使用接口技术
1定义接口Shape,其中包括一个方法size(),设计“直线”、“圆”、类实现Shape接口。分别创建一个“直线”、“圆”对象,将各类图形的大小输出。
编程技巧
(1) 接口中定义的方法在实现接口的具体类中要重写实现;
(2) 利用接口类型的变量可引用实现该接口的类创建的对象。

(一)抽象类的使用

package test;

public class Circle {

	public static void main(String[] args) {
		

	}

}

三角形

package test;

public class Shape1 extends Shape {
	private double a;
	private double b;
	private double 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 Shape1(double a,double b,double c) {
		this.a=a;
		this.b=b;
		this.c=c;
	}
	public double getP() {
		double P=((a+b+c)/2);
		return P;
	}
	public double getArea() {
		double area=Math.sqrt(getP()*(getP()-a)*(getP()-b)*(getP()-c));
		return area;
	}

矩形

package test;

public class Shap2 extends Shape{
	private double width;
	private double length;
	public double getWidth() {
		return width;
	}
	public void setWidth(double width) {
		this.width = width;
	}
	public double getLength() {
		return length;
	}
	public void setLength(double length) {
		this.length = length;
	}
	public Shap2 (double width,double length) {
		this.width=width;
		this.length=length;
	}
	public double getArea() {
		double area=getLength()*getWidth();
		return area;
	}

}

圆形:

package test;

public class Shape3 extends Shape {
	private double radius;
	public Shape3(double radius) {
		this.radius=radius;
	}
	public double getRadius() {
		return radius;
	}
	public void setRadius(double radius) {
		this.radius = radius;
	}
	public double getArea() {
		double area=Math.pow(radius,2)*3.14;
		return area;
	}


}

实验截图

二、使用接口技术

package test1;

interface Shape1 {
	public void size();
}

1.直线

class Circle implements Shape1{
	private double radius;

	public double getRadius() {
		return radius;
	}

	public void setRadius(double radius) {
		this.radius = radius;
	}
	public Circle(double radius) {
		this.radius=radius;
	}

	public double getArea() {
		double area=Math.pow(radius, 2)*3.14;
		return area;
	}
	public void size() {
		System.out.println("圆的大小:"+getArea());
	}
}

2.圆

package test1;

 class Zhixian implements Shape1{
		private double length;

		public double getLength() {
			return length;
		}

		public void setLength(double length) {
			this.length = length;
		}
		public Zhixian(double length) {
			this.length=length;
		}
		public double getC() {
			double c=length;
			return c;
			}
			public void size() {
				System.out.println("直线长度:"+getC());
			}
		}

实验截图

posted @ 2019-10-10 21:20  有灵魂的蚂蚁  阅读(170)  评论(0编辑  收藏  举报