zoukankan      html  css  js  c++  java
  • 实验报告四及总结

    实验四 类的继承

    一.实验目的

    (1)掌握类的继承方法

    (2)变量的继承和覆盖,方法的继承,重载和覆盖实现

    二.实验内容

    三.实验过程

    (1)
    实验代码

    package Yuan;
    import java.util.*;
    class Circle{
    	private double radius;
    	public Circle(){
    		this.setRadius(0);
    	}
    	public Circle(double r) {
    		this.setRadius(r);
    	}
    	public void setRadius(double r) { 
            radius = r; 
        } 
        public double getRadius() {
            return radius; 
        } 
        public double getPerimeter() {
        	return 2*Math.PI*radius;
        }
        public double getArea(){
            return Math.PI*radius*radius; 
        } 
        public void disp() {
        	System.out.print("圆的半径:"+radius);
        	System.out.print("圆的周长:"+2*Math.PI*radius);
        	System.out.println("圆的面积:"+Math.PI*radius*radius);
        }
    }
    public class Yuan{
    	public static void main(String[] args) {
    		Circle yuan=new Circle();
    		yuan.disp();
    		System.out.print("圆的半径:");
    		Scanner a=new Scanner(System.in);
    		double r=a.nextDouble();
    		Circle yuan2=new Circle(r);
    		yuan2.disp();
    	}
    }
    

    结果截图

    (2)
    实验代码

    package Yuan;
    
    import java.util.*;
    class Circle{
    	private double radius;
    	public Circle(){
    		this.setRadius(0);
    	}
    	public Circle(double r) {
    		this.setRadius(r);
    	}
    	public void setRadius(double r) { 
            radius = r; 
        } 
        public double getRadius() {
            return radius; 
        } 
        public double getPerimeter() {
        	return 2*Math.PI*radius;
        }
        public double getArea(){
            return Math.PI*radius*radius; 
        } 
        public void disp() {
        	System.out.print("圆的半径:"+radius);
        	System.out.print("圆的周长:"+2*Math.PI*radius);
        	System.out.println("圆的面积:"+Math.PI*radius*radius);
        }
    }
    class Cylinder extends Circle{
    	private double height;
    	public Cylinder(double r,double h) {
    		super(r);
    		this.setHeight(h);
    	}
    	public void setHeight(double h) {
    		height=h;
    	}
    	public double getHeight() {
    		return height;
    	}
    	public double getVol() {
    		return getArea()*height;
    	}
    	public void dispVol() {
    		System.out.println("圆柱体体积:"+getVol());
    	}
    }
    public class Yuan2{
    	public static void main(String[] args) {
    		Cylinder yuan3=new Cylinder(2,3);
    		yuan3.dispVol();
    	}
    }
    

    结果截图

    (3)
    实验代码

    package Yuan;
    
    import java.util.*;
    class Circle{
    	private double radius;
    	public Circle(){
    		this.setRadius(0);
    	}
    	public Circle(double r) {
    		this.setRadius(r);
    	}
    	public void setRadius(double r) { 
            radius=r; 
        } 
        public double getRadius() {
            return radius; 
        } 
        public double getPerimeter() {
        	return 2*Math.PI*radius;
        }
        public double getArea(){
            return Math.PI*radius*radius; 
        } 
        public void disp() {
        	System.out.print("圆的半径:"+radius);
        	System.out.print("圆的周长:"+2*Math.PI*radius);
        	System.out.println("圆的面积:"+Math.PI*radius*radius);
        }
    }
    class Cylinder extends Circle{
    	private double height;
    	public Cylinder(double r,double h) {
    		super(r);
    		this.setHeight(h);
    	}
    	public void setHeight(double h) {
    		height=h;
    	}
    	public double getHeight() {
    		return height;
    	}
    	public double getVol() {
    		return getArea()*height;
    	}
    	public void dispVol() {
    		System.out.println("圆柱体体积:"+getVol());
    	}
    }
    public class Yuan3{
    	public static void main(String[] args) {
    		System.out.print("圆柱体半径:");
    		Scanner a=new Scanner(System.in);
    		double r=a.nextDouble();
    		System.out.print("圆柱体的高:");
    		Scanner a1=new Scanner(System.in);
    		double h=a1.nextDouble();
    		Cylinder yuan3=new Cylinder(r,h);
    		yuan3.dispVol();
    	}
    }
    

    实验截图

    实验总结:

         这周的实验题和第二周有点相似,但是加了关于继承的一些知识点。在第二题中,实例化对象加了两个具体的参数,这个是我学到的新知识,但是感觉还不能实践运用。在实
         验过程中,老是会出现报错,但是不会影响运行。感觉我的代码还是很不规范,还需要改进。
         在题目中,圆周率刚开始不会写,后来百度发现Math.PI表示圆周率。
    

    学习总结:

    类的继承格式:

                   class 父类{}
                   class  子类  extends  父类{}
    

    只允许多层继承不能多重继承

        多重继承:一个子类只能继承一个父类。
        多层继承:一个子类能有一个父类,一个父类还可以有一个父类。
    

    子类不能直接访问父类中的私有成员,但是可以调用父类中的非私有方法。

    对象的多态性:
    1.对象的多态性主要分为以下两种类型:
    (1)向上转型:父类对象 ← 子类对象;
    (2)向下转型:子类对象 ← 父类对象;

    在进行对象的向下转型之前,一定要发生对象向上转型。否则会出现对象转换异常。

    自己的理解:多态就是通过子类向父类转型,从而达到多种对象的多种操作。

  • 相关阅读:
    [转] 敏捷软件开发 Agile Software Development
    Concurrent Framework Synchronizer 同步器: Easy to use but easy to make dead lock as well
    Concurrent Framework Timer
    JavaScript Return Object.Type
    Js AJAX Event
    js Functor Copy
    多线程19-线程池批量插入线程
    多线程18-QueueUserWorkItem
    多线程17-Async Programming Model
    多线程16-SpinWait
  • 原文地址:https://www.cnblogs.com/hltltp/p/11609865.html
Copyright © 2011-2022 走看看