第六周Java总结&实验总结

Java实验报告

班级 计科2班 学号 20188416 姓名 刘硕
完成时间
评分等级

实验四 类的继承

实验目的
掌握类的继承方法;
变量的继承和覆盖,方法的继承、重载和覆盖实现;

实验内容

第六周Java总结&实验总结_第1张图片
实验源码:

package Tree;
import java.util.Scanner;

class Circle{
    private double radius;    //对半径进行定义和封装
    public Circle() {
        setRadius(0);         //第一个构造方法
    }
    public Circle(double r) {
        setRadius(r);         //第二个构造方法
    }
    public double getRadius() {
        return radius;       
    }
    public void setRadius(double radius) {
        this.radius = radius;
    }
    public double getPerimeter() {
        return 2*Math.PI*getRadius();     //取得周长
    }
    public double getArea(){ 
        return Math.PI*getRadius()*getRadius();  //取得面积
    } 
    public void disp() {
        System.out.println("圆的半径为:"+getRadius());
        System.out.println("圆的周长为:"+getPerimeter());
        System.out.println("面积为:"+getArea());
    }
}

public class Green{

    public static void main(String args[]) {
        Scanner rad=new Scanner(System.in);
        Circle  cir=new Circle();    //声明并实例化对象
        cir.disp();
        System.out.println("请输入半径:");
        double r=rad.nextDouble();
        cir.setRadius(r);   //调用第二个构造方法
        cir.disp();
    }
}      

运行结果:
第六周Java总结&实验总结_第2张图片

实验源码:

package Tree;
import java.util.Scanner;

class Circle{
    private double radius;    //对半径进行定义和封装
    public Circle() {
        setRadius(0);         //第一个构造方法
    }
    public Circle(double r) {
        setRadius(r);         //第二个构造方法
    }
    public double getRadius() {
        return radius;       
    }
    public void setRadius(double radius) {
        this.radius = radius;
    }
    public double getPerimeter() {
        return 2*Math.PI*getRadius();     //取得周长
    }
    public double getArea(){ 
        return Math.PI*getRadius()*getRadius();  //取得面积
    } 
    public void disp() {
        System.out.println("圆的半径为:"+getRadius());
        System.out.println("圆的周长为:"+getPerimeter());
        System.out.println("面积为:"+getArea());
    }
}
class Cylinder extends Circle {
        private double height;
        public double getHeight() {
              return height;       //取得圆柱体的高
     }

        public void setHeight(double height) {
              this.height = height;   //设置圆柱的高
      }

        public Cylinder(double r,double h) {
              setRadius(r);       //调用父类的方法
              setHeight(h);
      }
        public double getVol() {
              return Math.pow(getRadius(),2)*Math.PI*getHeight();  //取得圆柱体积
      }
        public void dispVol() {
              System.out.println("圆柱体的体积为:"+getVol());
      }
}


public class Green{

    public static void main(String args[]) {
        Scanner rad=new Scanner(System.in);
        System.out.println("请输入半径:");
        double r=rad.nextDouble();
        System.out.println("请输入圆柱的高:");
        double h=rad.nextDouble();
        Cylinder vol=new Cylinder(r,h);
        vol.disp();
        vol.dispVol();
    }
}      

运行结果:
第六周Java总结&实验总结_第3张图片

四、总结
通过对属性的封装,类的继承等的学习,我知道了他们书写格式以及各自的作用。但是在编写代码的过程中并不能自然的写出,需要我翻书找到相应的例子才能写出,
希望能够进行更多练习得到提高。
1、接口

            1)定义
                  interface 接口名称{
                  }
            2)实现
                 class 子类 implements 接口A,接口B····{
                  }

2、对象的多态性
对象的多态性主要分两种类型:
1)向上转型:子类对象->父类对象
2)向下转型:父类对象->子类对象
对象转型

                        对象向上转型:父类 父类对象=子类实例    
                        对象向下转型:子类 子类对象=(子类)父类实例

对于向上转型,程序会自动完成,而对于向下转型时,必须明确的指明要转型的子类类型。

你可能感兴趣的:(第六周Java总结&实验总结)