总结:
1、每一个Java文件只能有一个公共类
2、默认访问属性的类只能被本包的成员访问
3、类的三大特性:封装性、继承性、多态性
4、Java的访问权限有4种,修饰符分别为:public、private、protected、不带访问权限修饰符。
(1)public:访问限制最宽的修饰符,被其修饰的类、属性、方法可以被跨类访问以及跨包访问
(2)默认访问权限:即不带访问权限的修饰符,默认访问权限只允许同一个包中进行访问
(3)protected:被其修饰的类、属性、方法只能被类本身的方法以及子类访问。注:即使子类在不同的包中也可以访问
(4)private:访问限制最窄的修饰符,被其修饰的类、属性、方法只能被该类的对象访问,其子类不能访问,也不能跨包访问
练习:
package mypackage01;
import java.util.Scanner;
public class mydemo
{
public static void main(String[] args)
{
System.out.print("——————执行程序——————\n");
Scanner scanner = new Scanner(System.in);
while (true)
{
System.out.print("——功能介绍——\n");
System.out.print("1.长方体的计算功能\t\t2.圆柱体的计算功能\t\t3.球体的计算功能\n");
System.out.print("使用功能请输入对应的数字编号:\t\t结束程序请输入:0\n");
final int choice = scanner.nextInt();
if (choice == 1)
{
cuboid();
continue;
}
if (choice == 2)
{
cylinder();
continue;
}
if (choice == 3)
{
sphere();
continue;
}
if (choice == 0)
{
break;
}
else
{
System.out.print("!!!您的输入有误请重新输入!!!\n");
continue;
}
}
scanner.close();
System.out.print("——————程序结束——————\n");
}
private static void cuboid()
{
System.out.print("——已进入长方体的计算功能——\n");
Scanner scanner = new Scanner(System.in);
System.out.print("请输入长方体的长:\n");
final double l = scanner.nextDouble();
System.out.print("请输入长方体的宽:\n");
final double w = scanner.nextDouble();
System.out.print("请输入长方体的高:\n");
final double h = scanner.nextDouble();
System.out.print("计算长方体的表面积请输入:1\t\t计算长方体的体积请输入:2\n");
final int choice = scanner.nextInt();
if (choice == 1)
{
System.out.printf("长方体表面积为: %.2f\n", Stero.cuboidArea(l, w, h));
}
if (choice == 2)
{
System.out.printf("长方体体积为: %.2f\n", Stero.cuboidVolume(l, w, h));
}
else
{
System.out.print("!!!您的输入有误!!!\n");
}
}
private static void cylinder()
{
System.out.print("——已进入圆柱体的计算功能——\n");
Scanner scanner = new Scanner(System.in);
System.out.print("请输入圆柱体的底面半径:\n");
final double r = scanner.nextDouble();
System.out.print("请输入圆柱体的高:\n");
final double h = scanner.nextDouble();
System.out.print("计算圆柱体的表面积请输入:1\t\t计算圆柱体的体积请输入:2\n");
final int choice = scanner.nextInt();
if (choice == 1)
{
System.out.printf("圆柱体表面积为: %.2f\n", Stero.cylinderArea(r, h));
}
if (choice == 2)
{
System.out.printf("圆柱体体积为: %.2f\n", Stero.cylinderVolume(r, h));
}
else
{
System.out.print("!!!您的输入有误!!!\n");
}
}
private static void sphere()
{
System.out.print("——已进入球体的计算功能——\n");
Scanner scanner = new Scanner(System.in);
System.out.print("请输入球体的半径:\n");
final double r = scanner.nextDouble();
System.out.print("计算球体的表面积请输入:1\t\t计算球体的体积请输入:2\n");
final int choice = scanner.nextInt();
if (choice == 1)
{
System.out.printf("圆柱体表面积为: %.2f\n", Stero.sphereArea(r));
}
if (choice == 2)
{
System.out.printf("圆柱体体积为: %.2f\n", Stero.sphereVolume(r));
}
else
{
System.out.print("!!!您的输入有误!!!\n");
}
}
}
class Stero
{
//定义长方体表面积的计算方法
public static double cuboidArea(double l, double w, double h)
{
System.out.print("!!!调用了长方体表面积的计算方法!!!\n");
if (l > 0 && w > 0 && h > 0)
{
Cuboid cuboid = new Cuboid(l, w, h);
return cuboid.area();
}
else
{
return -1.0;
}
}
//定义长方体体积的计算方法
public static double cuboidVolume(double l, double w, double h)
{
System.out.print("!!!调用了长方体体积的计算方法!!!\n");
if (l > 0 && w > 0 && h > 0)
{
Cuboid cuboid = new Cuboid(l, w, h);
return cuboid.volume();
}
else
{
return -1.0;
}
}
//定义圆柱体表面积的计算方法
public static double cylinderArea(double r, double h)
{
System.out.print("!!!调用了圆柱体表面积的计算方法!!!\n");
if (r > 0 && h > 0)
{
Cylinder cylinder = new Cylinder(r, h);
return cylinder.area();
}
else
{
return -1.0;
}
}
//定义圆柱体体积的计算方法
public static double cylinderVolume(double r, double h)
{
System.out.print("!!!调用了圆柱体体积的计算方法!!!\n");
if (r > 0 && h > 0)
{
Cylinder cylinder = new Cylinder(r, h);
return cylinder.volume();
}
else
{
return -1.0;
}
}
//定义球体表面积的计算方法
public static double sphereArea(double r)
{
System.out.print("!!!调用了球体表面积的计算方法!!!\n");
if (r > 0)
{
Sphere sphere = new Sphere(r);
return sphere.area();
}
else
{
return -1.0;
}
}
//定义球体体积的计算方法
public static double sphereVolume(double r)
{
System.out.print("!!!调用了球体体积的计算方法!!!\n");
if (r > 0)
{
Sphere sphere = new Sphere(r);
return sphere.volume();
}
else
{
return -1.0;
}
}
}
class Cuboid extends Stero
{
private double length;//定义长方体的长
private double width;//定义长方体的宽
private double high;//定义长方体的高
//构造一个长宽高都是1.0的长方体
public Cuboid()
{
this.setLength(1.0);
this.setWidth(1.0);
this.setHigh(1.0);
}
//构造一个有长宽高参数的长方体
public Cuboid(double length, double width, double high)
{
this.setLength(length);
this.setWidth(width);
this.setHigh(high);
}
//获取长方体的长
public double getLength()
{
return length;
}
//获取长方体的宽
public double getWidth()
{
return width;
}
//获取长方体的高
public double getHigh()
{
return high;
}
//定义长方体的长
public void setLength(double length)
{
this.length = length;
}
//定义长方体的宽
public void setWidth(double width)
{
this.width = width;
}
//定义长方体的高
public void setHigh(double high)
{
this.high = high;
}
//定义长方体表面积的计算方法
public double area()
{
return 2 * (this.length * this.width +this.width * this.high + this.high * this.length);
}
//定义长方体体积的计算方法
public double volume()
{
return this.length * this.width * this.high;
}
}
class Cylinder extends Stero
{
private double radius;
private double high;
//构造一个地面半径和高都是1.0的圆柱体
public Cylinder()
{
this.radius = 1.0;
this.high = 1.0;
}
//构造一个底面半径和高都有参数的圆柱体
public Cylinder(double radius, double high)
{
this.radius = radius;
this.high = high;
}
//获取圆柱体的底面半径
public double getRadius()
{
return this.radius;
}
//获取圆柱体的高
public double getHigh()
{
return this.high;
}
//定义圆柱体的底面半径
public void setRadius(double radius)
{
this.radius = radius;
}
//定义圆柱体的高
public void setHigh(double high)
{
this.high = high;
}
//定义圆柱体表面积的计算方法
public double area()
{
return 2 * Math.PI * Math.pow(this.radius, 2) + 2 * Math.PI * this.radius * this.high;
}
//定义圆柱体体积的计算方法
public double volume()
{
return Math.PI * Math.pow(this.radius, 2) * this.high;
}
}
class Sphere extends Stero
{
private double radius;
//构造一个半径为1.0的球体
public Sphere()
{
this.radius = 1.0;
}
//构造一个半径为带参的球体
public Sphere(double radius)
{
this.radius = radius;
}
//获取球体的半径
public double getRadius()
{
return this.radius;
}
//定义球体的半径
public void setRadius(double radius)
{
this.radius = radius;
}
//定义球体表面积的计算方法
public double area()
{
return 4 * Math.PI * Math.pow(this.radius, 2);
}
//定义球体体积的计算方法
public double volume()
{
return (4 * Math.PI * Math.pow(this.radius, 3))/3;
}
}