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

    实验五 类的继承

    一、 实验目的

    • (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进行处理。

  • 相关阅读:
    智能推荐算法演变及学习笔记(三):CTR预估模型综述
    从中国农业银行“雅典娜杯”数据挖掘大赛看金融行业数据分析与建模方法
    智能推荐算法演变及学习笔记(二):基于图模型的智能推荐(含知识图谱/图神经网络)
    (设计模式专题3)模板方法模式
    (设计模式专题2)策略模式
    (设计模式专题1)为什么要使用设计模式?
    关于macOS上常用操作命令(持续更新)
    记录下关于RabbitMQ常用知识点(持续更新)
    EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
    SpringCloud教程二:Ribbon(Finchley版)
  • 原文地址:https://www.cnblogs.com/xiao--liang/p/11651423.html
Copyright © 2011-2022 走看看