java实验报告四
(1)根据下面的要求实现圆类Circle。
1.圆类Circle的成员变量:radius表示圆的半径。
2.圆类Circle的方法成员:
Circle():构造方法,将半径置0
Circle(double r):构造方法,创建Circle对象时将半径初始化为r
double getRadius():获得圆的半径值
double getPerimeter():获得圆的周长
void disp():将圆的半径和圆的周长,圆的面积输出到屏幕
(2)继承第一题中的圆Circle类,派生圆柱体类Cylinder。要求如下:
1.圆柱体类Cylinder的成员变量:height表示圆柱体的高。
2.圆柱体类Cylinder的成员方法:
Cylinder(double r,double h)构造方法,创建Cylinder对象时将圆半径初始化为r,圆柱体高初始化为h。
double getHeight():获得圆柱体的高
double getVol():获得圆柱体的体积
void dispVol():将圆柱体的体积输出到屏幕
3.按照第二题的Cylinder类,接上键盘的输入值作为圆的半径和圆柱体的高,计算圆柱体的体积
实验代码:
package 官方; import java.util.Scanner; public class Circle { private double radius; public Circle(){ this.setRadius(0); } public Circle(double r){ this.setRadius(r); } public double getRadius() { return radius; } public void setRadius(double radius) { this.radius = radius; } public double getPerimeter() { return getRadius()*2*Math.PI; } public double getArea() { return Math.PI*getRadius()*getRadius(); } public void disp(){ System.out.println("圆的半径:"+getRadius()); System.out.println("圆的周长:"+getPerimeter()); System.out.println("圆的面积: "+getArea()); } }
package 官方; import java.util.Scanner; public class Cylinger extends Circle{ private double height; public double getHeight() { return height; } public void setHeight(double height) { this.height = height; } Cylinger (double r,double h){ this.setRadius(r); this.setHeight(h); } public double getVol(){ return getArea()*getHeight(); } public void dispVol(){ System.out.println("圆柱的体积:"+getVol()); } }
package 官方; import java.util.Scanner; public class Test { public static void main(String[] args){ System.out.println("输入圆的半径"); Scanner sc=new Scanner(System.in); double r=sc.nextDouble(); System.out.println("输入圆柱的高"); double h=sc.nextDouble(); Cylinger Cy=new Cylinger(r,h); Cy.dispVol(); Cy.disp(); } }
第六周总结
使用interface来定义一个接口。接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成。
修饰符用于指定接口的访问权限,可选值为public。如果省略则使用默认的访问权限。
接口名用于指定接口的名称,接口名必须是合法的Java标识符。一般情况下,要求首字母大写。
extends 父接口名列表:可选参数,用于指定要定义的接口继承于哪个父接口。当使用extends关键字时。
接口中的方法只有定义而没有被实现。
接口被用来描述一种抽象;接口也被用来实现解耦。
接口被用来实现抽象,而抽象类也被用来实现抽象,抽象类内部可能包含非final的变量,但是在接口中存在的变量一定是final,public,static的。
与Java的类文件一样,接口文件的文件名必须与接口名相同。
抽象类与接口的应用:可以通过对象的多态性,为抽象类和接口实例化,这样再使用抽象类和接口的时候就可以调用本子类中所覆写过的方法。
之所以抽象类和接口不能直接实例化,是因为其内部包含了抽象方法,抽象方法本身是未实现的方法,所以无法调用。
通过对象多态性可以发现,子类发生了向上转型关系之后,所调用的全部方法,都是被覆写过的方法。