- 涉及多态的基础使用,向上向下转型
- 涉及构造,局部,抽象方法使用
- 涉及实列,局部,常量的使用
- 涉及分支结构的使用
- 涉及逻辑与赋值运算符的使用
- 涉及import,Scanner类的使用
import java.util.Scanner;
public class Demo05 {
/*
* 定义一个a类继承一个b类,实现一个接口c类,涉及构造方法,计算表面积和体积
*圆表面积公式:s=π*r²
* 圆体积计算公式:s*h
* */
//main方法
public static void main(String[] args){
Scanner s1 = new Scanner(System.in);
System.out.println("请选择计算类型:1,圆面积,2圆体积");
int x2 = s1.nextInt();
if(x2 == 1) {
Yuan_3 y = new Yuan_2();
//可以向下转型,多态,也可以重新创建,Yuan_2对象
Yuan_2 y1 = (Yuan_2) y;
//键盘扫描
Scanner s = new Scanner(System.in);
System.out.println("请输入圆面积的半径:");
double a = s.nextDouble();
//封装赋值
y.setC(a);
//打印,圆面积
y1.fangFa01(a);
//查看实列变量的赋值结果
System.out.println("实列变量c的赋值结果:"+y.getC()+"==》"+"实列变量h的赋值结果:"+y.getH());
}else if(x2 == 2){
//可以向下转型,多态,也可以重新创建,Yuan_2对象
Yuan_3 y2 =new Yuan_2();
Yuan_2 y3 = (Yuan_2) y2;
//扫描键盘
System.out.println("请输入圆的高:");
double a1 = s1.nextDouble();
System.out.println("请输入圆面积:");
double a2 = s1.nextDouble();
//封装赋值
y2.setH(a1);
//打印,体积
y3.fangFa02(a1,a2);
//查看实列变量赋值结果
System.out.println("实列变量c的赋值结果:"+y2.getC()+"==》"+"实列变量h的赋值结果:"+y2.getH());
}else if(x2 != 2 && x2 != 1){
System.out.println("您输入有误:请输入1或者2==》1,圆面积,2圆体积");
}
/*
出了大括号就不认识了
//查询封装实列变量的赋值结果
Yuan_3 x =new Yuan_2();
System.out.println("实列变量c的赋值结果:"+x.getC()+"实列变量h的赋值结果:"+x.getH());
*/
}
}
class Yuan_2 extends Yuan_3 implements Yuan_4{
//定义一个实列变量
double f;
//实现
public void fangFa01(double c){
double d = c;
double e = PI*(c*d);
f = e;
System.out.println("圆的表面积计算结果:"+e);
}
public void fangFa02(double c,double h){
double c1 = c;
System.out.println("圆的体积计算结果:"+((c*c1)*PI)*h);
}
}
abstract class Yuan_3{
//常量
static final double PI =3.14;
//定义实列变量
private double c;
private double h;
//get,set
public void setC(double c) {
this.c = c;
}
public void setH(double h) {
this.h = h;
}
public double getC() {
return c;
}
public double getH() {
return h;
}
//无参
public Yuan_3(){
}
//有参
public Yuan_3(double c){
this.c = c;
}
public Yuan_3(double c,double h){
this.c = c;
this.h = h;
}
}
interface Yuan_4{
void fangFa01(double c);
void fangFa02(double c ,double h);
}