10/6-10/12 java学习总结(没有课堂的课后学习总结) &实验总结5

 

                   10/6-10/12 java学习总结(没有课堂的课后学习总结) &实验总

实验四 类的继承

 

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

 

 

 

  • 实验内容

 

(一)抽象类的使用

 

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

 

(1) 接口中定义的方法在实现接口的具体类中要重写实现;

 

(2) 利用接口类型的变量可引用实现该接口的类创建的对象。

 

 

 

package NAME;
import java.util.*;
public class FIRST{
    public static void main(String[] args){
        triangle tr=new triangle(5,12,13);
        rectangle re=new rectangle(8,8);
        circle cr=new circle(8);
        tr.output1();
        re.output2();
        cr.output3();
    }
}
abstract class Shape{
    public abstract double area();
}
class triangle extends Shape {
    private double a,b,c,d;
    
    public triangle(double a,double b,double c) {
        setA(a);
        setB(b);
        setC(c);
        setD((a+b+c)/2);
    }
    
    public double area() 
    {
        return Math.sqrt(getD()*(getD()-getA())*(getD()-getB())*(getD()-getC()));
    }
    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 double getD() 
    {
        return d;
    }
    public void setD(double d) 
    {
        this.d = d;
    }
    public void output1() {
        System.out.println(area());
    }
}
class rectangle extends Shape{
    private double a,b;
    public double area() 
    {
        return a*b;
    }
    public rectangle(double a,double b)
    {
        setA(a);
        setB(b);
    }
    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 void output2() 
    {
        System.out.println(area());
    }
}
class circle extends Shape{
    private double radius;
    public double area() 
    {
        return 2*(Math.PI*Math.pow(radius, 2));
    }
    public double getRadius()
    {
        return radius;
    }
    public void setRadius(double radius)
    {
        this.radius = radius;
    }
    public circle(double radius)
    {
        setRadius(radius);
    }
    public void output3()
    {
        System.out.println(area());
    }
}

 

 

 

  

 10/6-10/12 java学习总结(没有课堂的课后学习总结) &实验总结5_第1张图片

 

 

 

 

 

package id;
import java.util.Scanner;
interface shape{
public void size();
}

class yuan implements shape{
private double m;
public double getBj() {
    return m;
}
public void setBj(double bj) {
    this.m = bj;
}
public yuan(double bj) {
    setBj(bj);
}
public void size() {
        System.out.println("圆的面积为:"+ Math.PI*Math.pow(m, 2));
        System.out.println("圆的周长为:"+ Math.PI*2*m);
            }
    }


class line implements shape{
private double x1,y1,x2,y2;

public double getX1() {
    return x1;
}

public void setX1(double x1) {
    this.x1=x1;
}

public double getY1() {
    return y1;
}

public void setY1(double y1) {
    this.y1=y1;
}

public double getX2() {
    return x2;
}

public void setX2(double x2) {
    this.x2=x2;
}

public double getY2() {
    return y2;
}

public void setY2(double y2) {
    this.y2=y2;
}
public line(double x1,double y1,double x2,double y2) {
    this.x1=x1;
    this.x2=x2;
    
    this.y1=x2;
    this.y2=y2;
}
public void size() {
    System.out.println("直线的长度:"+ Math.sqrt(Math.pow(x1-x2, 2)+Math.pow(y1-y2, 2)));
}
}
public class hope { 

public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    System.out.println("输入圆的半径:");
    double bj=sc.nextDouble();
    yuan p1=new yuan(bj);
    p1.size();
    System.out.println("输入直线两点端点的坐标:");
    double x1=sc.nextDouble();
    double y1=sc.nextDouble();
    double x2=sc.nextDouble();
    double y2=sc.nextDouble();
    line p2=new line(x1,y1,x2,y2);
    p2.size();
}

}

  

 

10/6-10/12 java学习总结(没有课堂的课后学习总结) &实验总结5_第2张图片

 

 

 

 

 

 

抽象类

 

抽象类和接口的区别

1. 抽象类中的方法可以有能实现方法的具体功能方法体,但是接口中不能有方法体。

2. 抽象类中的成员变量不限制类型,而接口中的成员变量只能是 public static final 类型的。

 

3. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

 

object类

 Object类是所有类的父类,声明一个Object类的作用就是可以传递任何类型的类来使用。

Object是所有类的父类,它有很多类对象会用到的方法,例如比较常用的toString 、equals。

写封装方法的时候不确定传进来的值的类型,就可以使用Object作为类

接口

 

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

实现接口:

class 子类 implements 接口A,接口B,...{}

继承抽象类实现接口 :

class 子类 extends 抽象类 implements 接口A,接口B,...{}

接口的继承:

interface 子接口 extends 父接口A,父接口B,...{}

自我总结:昨天把上次没有听课讲的内容补回来了,这次作业基本上没什么问题,除了那个静态变量那里出了一点问题,多看了一下就解决了

 

 

你可能感兴趣的:(10/6-10/12 java学习总结(没有课堂的课后学习总结) &实验总结5)