第六周课程总结&试验报告(四)

一.实验目的

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

二.实验内容

三.实验过程

1. 实验源码

package test;
import java.util.Scanner;
class Circle{
private double radius;//定义半径
public double getRadius() {//取得Radius属性
	return radius;
}
public void setRadius(double radius) {//设置Radius属性
	this.radius = radius;
}
public Circle() {//声明第一个构造方法设置Radius为0
	setRadius(0);
}
public Circle(double r) {//声明第二个构造方法设置Radius为传递的参数值r
	setRadius(r);
}
public double getPerimeter() {//取得周长
	return 2*Math.PI*getRadius();
}
public void disp() {//输出
	System.out.println("圆的半径为:"+getRadius());
	System.out.println("圆的周长为:"+getPerimeter());
	System.out.println("面积为:"+Math.pow(getRadius(),2)*Math.PI);
}
}
public class 实验四1 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Scanner sc=new Scanner(System.in);
	Circle pr=new Circle();
	pr.disp();
	System.out.println("请输入半径:");
	double r=sc.nextDouble();
	pr.setRadius(r);
	pr.disp();
}
}

实验结果

2.实验源码

package test;
import java.util.Scanner;

class Cylinder extends Circle {//Cylinder是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 实验四2 {
public static void main(String[] args) {
	Scanner sc=new Scanner(System.in);
	System.out.println("请输入圆的半径:");
	double r=sc.nextDouble();
	System.out.println("请输入圆的高:");
	double h=sc.nextDouble();
	Cylinder pr=new Cylinder(r,h);//调用子类构造方法,传递参数r,h
	pr.disp();
	pr.dispVol();
}
}

实验结果

3.

在2.中已实现

结论

我感觉本次实验主要是考察继承的简单应用,实验内容1不难,主要是写一个类,实验内容2写一个子类,并对父类进行扩展。
在同一个包中,子类可以直接在另一个class文件中写,而不需要把父类再写一遍。在定义子类对象时,若子类中有构造方法,
则要直接调用构造方法,这个我发现后,还没搞懂,其余的还好。

课程总结

接口

接口可以理解为一种特殊的类
1.接口的定义

interface 接口名称{
        全局常量;
        抽象方法;
}

在接口中如果不写public,则也是public访问权限,接口中的方法永远是public。
2.接口实现
接口的使用要通过子类,子类通过implements关键字实现接口

class 子类 implements 接口A,接口B,····{//一个子类可以同时实现多个接口
}

对象的多态性

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

对象向上转型:父类 父类对象=子类实例    //向上转型,程序会自动完成
对象向下转型:子类 子类对象=(子类)父类实例

如果对象发生了向上转型关系,所调用的方法一定是被子类覆写过的方法,若一种方法只在子类中定义,
而没有在父类中定义,如果要想调用子类定义的其他方法,肯定要使用子类实例。
对象在进行向下转型之前,必须首先发生对象向上转型,否则会出现对象转换异常。

posted @ 2019-10-04 16:56  L磊  阅读(165)  评论(0编辑  收藏  举报