Java作业1:Java基础-+-OOP技术训练

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、作业1: Java基础+ OOP技术训练(封装继承、多态)
2、整理出Java的特点。

1.面向对象的语言
2.与平台无关
3.相对C++较简单
4.程序的健壮性
5.可移植性
6.支持多线程
3、详细阐述环境变量PATH、CLASSPATH的作用。

PATH: 配置JDK命令文件的位置。

Java编译器和解释器在Java安装目录的bin文件夹中, 配置PATH变量能使操作系统方便地查找JDK命令。

CLASSPATH: 配置类库文件的位置, 使解释器在加载类时能正确查找类所在的位置。

写出一段HelloWorld的Java程序, 解释程序的各个部分的含义(包定义、包导入、类定义、主函数、打印语句等)
package a; //定义a包
public class A { //a包中定义A类
public A() {
System.out.println("HelloWorld."); //打印HelloWorld
}
}
import a.A; //导入a包中的A类
public class HelloWorld { //定义类HelloWorld
public static void main(String[] args) { //主函数
A obj=new A();
System.out.println("Done.");
}
}
4.(1)定义两个AbstractPole的子类CirclePole, RectanglePole;(2)分别按照圆形、矩形的逻辑定义其构造函数, 用来初始化其底面积计算需要的变量(如半径;长、宽);(3)覆盖父类中的抽象方法area(), 计算对应的截面积;
import java.util.Scanner;
public abstract class AbstractPole {
public abstract double area();
public static void main(String[] args) {
CirclePole c1=new CirclePole(0);
RectanglePole r1=new RectanglePole(0,0);
Scanner sc=new Scanner(System.in);
System.out.println("请输入半径: ");
c1.r=sc.nextInt();
System.out.println("圆柱底面积: "+c1.area());
System.out.println("请输入长和宽: ");
r1.l=sc.nextInt();
r1.w=sc.nextInt();
System.out.println("棱柱底面积: "+r1.area());
}
}
class CirclePole extends AbstractPole {
double r;
CirclePole(double r) {
this.r=r;
}
public double area() {
return Math.PI*r*r;
}
}
class RectanglePole extends AbstractPole {
double l,w;
RectanglePole(double l,double w) {
this.l=l;
this.w=w;
}
public double area() {
return l*w;
}
}
5.定义一个Client类, 定义有一个主函数, 在一个循环体内根据随机数不同, 分别生成
CirclePole或者RectanglePole的对象, 将这个对象放到预先定义的数组poleArray中。

然后循环遍历poleArray数组, 输出其中每个对象的体积。

package Pole;
import java.util.Scanner;
public abstract class AbstractPole {
double h=1;
public abstract double area();
public double volumn() {
return area()*h;
}
public static void main(String[] args) {
CirclePole c1=new CirclePole(0);
RectanglePole r1=new RectanglePole(0,0);
Scanner sc=new Scanner(System.in);
System.out.println("请输入半径: ");
c1.r=sc.nextInt();
System.out.println("圆柱底面积: "+c1.area());
System.out.println("请输入长和宽: ");
r1.l=sc.nextInt();
r1.w=sc.nextInt();
System.out.println("棱柱底面积: "+r1.area());
}
}
package Pole;
public class CirclePole extends AbstractPole {
double r;
public CirclePole(double r) {
this.r=r;
}
public double area() {
return Math.PI*r*r;
}
}
package Pole;
public class RectanglePole extends AbstractPole {
double l,w;
public RectanglePole(double l,double w) {
t his.l=l;
t his.w=w;
}
public double area() {
return l*w;
}
}
import Pole.*;
public abstract class Client extends AbstractPole {
public static void main(String[] args) {
AbstractPole poleArray[] = new AbstractPole[10];
for(int i=0;i<10;i++) {
int d=(int)(Math.random()*10+1);
if(d%2==0) {
System.out.println("随机数是: "+d);
CirclePole c1=new CirclePole(d);
poleArray[i]=c1;
System.out.println("此圆柱的体积是: "+c1.volumn());
System.out.println();
}
else {
System.out.println("随机数是: "+d);
RectanglePole r1=new RectanglePole(d,d);
poleArray[i]=r1;
System.out.println("此棱柱的体积是: "+r1.volumn());
System.out.println();
}
}
}
}
6.方法的重载和重写的区别是什么?
方法重载:在一个类中创建多个不同定义的方法。

它们的方法名相同,但参数个数或参数类型不一样, 返回类型可以相同也可以不相同。

方法重写: 子类重新定义父类中的方法。

重写的方法名、返回类型、参数类型、参数个数都和父类中的一样。

7、子类覆盖父类方法的两条原则是什么?
1.子类重写父类方法时, 不能降低方法的访问权限
2.子类重写的方法不能比父类方法传递更多的异常。

相关文档
最新文档