第六周&java实验报告四

一.实验目的

(1)掌握类的继承

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

二.实验的内容

(1)根据下面的要求实现圆类Circle。

1.圆类Circle的成员变量:radius表示圆的半径。

2.圆类Circle的方法成员:

       Circle():构造方法,将半径置0
       Circle(double r):构造方法,创建Circle对象时将半径初始化为r
       double getRadius():获得圆的半径值
       double getPerimeter():获得圆的周长
       void disp():将圆的半径和圆的周长,圆的面积输出到屏幕

实验代码:

package work4;

public class Circle {

	private double radius;

	public Circle (double r) {
		radius=r;
	}
	public double getRadius() {
		return radius;
	}
	public void setRadius(double radius) {
		this.radius = radius;
	}
	public double getPerimeter() {
		return 2*Math.PI*radius;
	}
	public double getArea() {
		return Math.PI*Math.pow(radius,2);
	}
	public static void main(String[] args) {
		Circle total=new Circle(16);
		System.out.println("圆的半径为:"+total.radius);
		System.out.println("圆的周长为:"+total.getPerimeter());
		System.out.println("圆的面积为:"+total.getArea());
	}
}

运行截图:

(2)继承第一题中的圆Circle类,派生圆柱体类Cylinder。要求如下:

1.圆柱体类Cylinder的成员变量:height表示圆柱体的高。

2.圆柱体类Cylinder的成员方法:

        Cylinder(double r,double h)构造方法,创建Cylinder对象时将圆半径初始化为r,圆柱体高初始化为h。
        double getHeight():获得圆柱体的高
        double getVol():获得圆柱体的体积
        void dispVol():将圆柱体的体积输出到屏幕

实验代码:

package work4;

public class Cylinder extends Circle{

	private double height;
	public Cylinder(double height,double radius) {
		super(radius);
		this.setHeight(height);
	}
	public double getHeight() {
		return height;
	}
	public void setHeight(double height) {
		this.height = height;
	}
	public double getVol() {
		return super.getArea()*height;
	}
	public static void main (String[] args) {
		Cylinder total=new Cylinder(1.0,16.0);
		System.out.println("圆柱的体积为:"+total.getVol());
	}
}

运行截图:

3.按照第二题的Cylinder类,接上键盘的输入值作为圆的半径和圆柱体的高,计算圆柱体的体积

实验代码:

package work4;
import java.io.*;
import java.util.*;
public class Cylinder extends Circle{

	private double height;
	public Cylinder(double height,double radius) {
		super(radius);
		this.setHeight(height);
	}
	public double getHeight() {
		return height;
	}
	public void setHeight(double height) {
		this.height = height;
	}
	public double getVol() {
		return super.getArea()*height;
	}
	public static void main (String[] args) {
		Scanner sc=new Scanner(System.in);
		int height=sc.nextInt();
		int radius=sc.nextInt();
		Cylinder total=new Cylinder(height,radius);

		System.out.println("圆柱的体积为:"+total.getVol());
	}
}

运行截图:

学习总结:

1、类的继承格式

在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下:

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

2、继承的特性

1.子类拥有父类非 private 的属性、方法。
2.子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
3.子类可以用自己的方式实现父类的方法。

3、包含一个抽象方法的类必须是抽象类;抽象类和抽象方法都要使用abstract关键字声明;抽象方法只需要声明而不需要实现;抽象类必须被子类继承,子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法。

抽象类的定义格式:

abstract class抽象类名称{
    属性;
    访问权限返回值类型方法名称(参数){ //普通方法
        [return返回值];
}
    访问权限abstract返回值类型方法名称(参数); //抽象方法
    //在抽象方法中是没有方法体的
}

4、对象的多态性

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

5、instanceof关键字 : 在Java中可以使用 instanceof 关键字判断一个对象到底是哪个类的实例


对象  instanceof  类   ->  返回 boolean  类型 

6、为抽象类与接口的实例化

abstract class A{
    public abstract viod print();
}
class B extends A{
    public void print(){
        System.out.println("hello word!");
}
};
public class AbstractCaseDemo01{
    public static void main (String[] args){
         A a=new B();
        a.print();
}
}
原文地址:https://www.cnblogs.com/zzwwll/p/11630124.html