zoukankan      html  css  js  c++  java
  • 第七周

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

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

    package Shape;
    public abstract class Shape {
         abstract double area();
    }
    class Triangle extends Shape{
    	private double a,b,c;
    	Triangle(double a,double b,double c) {
    		this.a=a;
    		this.b=b;
    		this.c=c;       
    	}
    
    	@Override
    	double area() {
    		// TODO Auto-generated method stub
    		double p=(a+b+c)/2,Ts;
    		Ts=Math.sqrt(p*(p-a)*(p-b)*(p-c));
    		return Ts ;
    	}
    }
    class Rectangle extends Shape{
    	private double width,height;
    	Rectangle(double j,double k){
    		width=j;
    		height=k;
    	}
    	@Override
    	double area() {
    		// TODO Auto-generated method stub
    		double Rs;
    		Rs=width*height;
    		return Rs;
    	}
    }
    class Circle extends Shape{
    	private double r;
    	Circle(double r){
    		this.r=r;
    	}
    	@Override
    	double area() {
    		// TODO Auto-generated method stub
    		double Cs;
    		Cs= Math.PI*r*r;
    		return Cs;
    	}
    }
    

    代码②

    package Shape;
    
    public class sum {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Shape s[]=new Shape[3];
    		s[0]=new Triangle(3,4,5);
    		s[1]=new Rectangle(3,4);
    		s[2]=new Circle(2);
    		for(int z=0;z<s.length;z++)
    		{
    			System.out.println(s[z].area());
    		}
    	}
    }
    

    二、实验结果


    (二)使用接口技术
    1定义接口Shape,其中包括一个方法size(),设计“直线”、“圆”、类实现Shape接口。分别创建一个“直线”、“圆”对象,将各类图形的大小输出。
    编程技巧
    (1) 接口中定义的方法在实现接口的具体类中要重写实现;
    (2) 利用接口类型的变量可引用实现该接口的类创建的对象。

    一、实验代码
    代码①

    package port;
    
    interface Shape {
    	double size();
    }
    class Line implements Shape{
    	private double x1,x2,y1,y2;
    	public Line(double x1,double x2,double y1,double y2) {
    		this.x1=x1;
    		this.x2=x2;
    		this.y1=y1;
    		this.y2=y2;
    	}
    	@Override
    	public double size() {
    		// TODO Auto-generated method stub
    		double distance,s;
    		s=Math.pow(x2-x1,2)+Math.pow(y2-y1,2);
    		distance=Math.sqrt(s);
    		return distance;
    	}
    
    class Circle implements Shape{
    	private double r;
    	public Circle(double r) {
    		this.r=r;
    	}
    	@Override
    	public double size() {
    		// TODO Auto-generated method stub
    		double Cs;
    		Cs=Math.PI*r*r;
    		return Cs;
    	}
      }
    }
    

    代码②

    package port;
    
    public class Count {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Shape s[]=new Shape[2];
    		s[0]=new Line(3,4,4,5);
    		for(int z=0;z<s.length;z++) {
    			System.out.println(s[z].size());
    		}
    	}
    
    }
    

    二、实验结果

    (三)总结
    ①继承不可以多重继承,但接口可以多重实现。
    ②interface:接口,接口里只可以有全局常量(需要大写)和抽象方法,不可有变量;
    Implements:实现接口。
    ③本周以强化上周知识点为主,复习假前所学习的内容。

  • 相关阅读:
    [分享] Knockout.js 体验之旅
    [分享] 用NodeJs做一个小爬虫,附源码!
    [分享] 纯CSS完美实现垂直水平居中的6种方式
    [分享] 来,做一个问卷调查(有抽奖!)
    除非你是BAT,前端开发中最好少造轮子
    [分享] 微信支付中商户对个人用户付款案例
    30分钟做一个二维码名片应用,有源码!
    【分享】WeX5的正确打开方式(7)——数据组件详解
    基于phonegap,html5,ratchet,handlebars等技术的微表情APP
    html5实现web app摇一摇换歌
  • 原文地址:https://www.cnblogs.com/gaotian250yj912/p/11655983.html
Copyright © 2011-2022 走看看