一.实验目的
(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();
}
}