zoukankan      html  css  js  c++  java
  • 第七周课程总结&实验报告

    实验目的

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

    实验代码

    package test;
    
    public abstract class Shape {
            public abstract double area();
        }
    
        
        
            class Triangle  extends Shape {
            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 Triangle (double a, double b, double c) {
                this.a = a;
                this.b = b;
                this.c = c;
            }
            public double area() {
                double p = (a + b + c);
                System.out.println("三角形的面积为:"+Math.sqrt(p * (p - a) * (p - b) * (p - c)));
                return 0;
            }
        }
    
        
        
            class Rectangle extends Shape {
            public double getWidth() {
                return width;
            }
            public void setWidth(double width) {
                this.width = width;
            }
            public double getHeight() {
                return height;
            }
            public void setHeight(double height) {
                this.height = height;
            }
            private double width, height;
            public Rectangle (double width, double height) {
                this.width = width;
                this.height = height;
            }
            public double area() {
            	System.out.println("矩形的面积为:"+width * height);
            	return 0;
            }
        }
    
        
        
            class Circle extends 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 double area() {
            	System.out.println("圆形的面积为:"+Math.PI * r * r);
                return 0;
            }
        }
    
    
    
    package test;
    
    public class Six {
    	    public static void main (String args[]) {
    	        Shape s[] = new Shape[3];
    	        s[0] = new Triangle(10,20,30); 
    	        s[1] = new Rectangle(40,50);
    	        s[2] = new Circle(60);
    	        
    	        s[0].area();
    	        s[1].area();
    	        s[2].area();
    	    }
    }
    
    
    
    

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

    package test;
    
    public interface Shape {
    	public double size();
    }
    
    class Line implements Shape{
    	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;
    	}
    	public double size() {
    		return Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
    	}
    }
    
    class Circle implements Shape{
    	double r;
    	public Circle(double r) {
    		this.r = r;
    	}
    	public double size() {
    		return Math.PI * r * r;
    	}
    }
    
    
    
    package test;
    
    public class Six {
    	public static void main (String args[]) {
    		Line l = new Line(10,20,30,40);
    		Circle c = new Circle(50);
    		System.out.println("直线的长度:"+l.size());
    		System.out.println("圆的面积:"+c.size());
    	}
    }
    
    

    经过做了这次实验,对抽象类和接口有了深一点的认识,对父类子类也感觉更清晰。

    本周了解了一下Object类,它是java中最为常用的一个系统程序类,在java中Object类是所有类的公共父类,一个类要是没有明显的继承一个类,则肯定是Object的子类。
    Object中两个常用方法:public boolean equals(Object obj) (对象比较), public String toSting() (对象打印时调用)

    抽象类与接口的关系

    区别点 抽象类 接口
    定义 包含一个抽象方法的类 抽象方法和全局常量的集合
    组成 构造方法丶抽象方法丶普通方法丶常量,变量 常量丶抽象方法
    使用 子类继承抽象类(extends) 子类实现接口(inplements)
    关系 抽象类可以实现多个接口 接口不能继承抽象类,但允许继承多个接口
    常见设计模式 模板设计 工厂设计丶代理设计
    对象 都通过对象的多态性产生实例化对象
    局限 抽象类有单继承的局限 接口没有单继承的局限
    实际 作为一个模板 是作为一个标准或是表示一种能力
    选择 如果抽象类和接口都可以使用,优先使用接口,避免单继承的局限
    特殊 一个抽象类中可以包含多个接口,一个接口中可以包含多个抽象类
  • 相关阅读:
    MyEclipse控制台输出tomcat红字
    struts标签bean:define
    字节流转换为对象的方法
    C#将jpg格式图片合成到bmp格式图片中
    [置顶]C#中Socket服务端代码分享
    [置顶] C#中Socket服务端代码分享
    [置顶] 使用Joson的格式字符串在Socket中通讯时数据格式的转换
    [置顶] AMF序列化为对象和AMF序列化为二进制字节流
    用C#获取CPU编号、硬盘编号等系统有关环境、属性
    别把紧张情绪带回家 下班后的10个最佳放松法
  • 原文地址:https://www.cnblogs.com/20188382llz/p/11653603.html
Copyright © 2011-2022 走看看