Java基础编程实现2-面向对象-类
java基础练习例题和答案,主要内容:类和对象
1.编写一个Java应用程序,该程序有2个类:Vehicle(机动车)和User(主类)。
Vehicle类的成员变量有:speed(速度)、power(功率)。成员方法有:speedUp(int s)—加速,speedDown(int d)—减速,setPower(int p)—设置功率,getPower()—获取功率
Vehicle.java
public class Vehicle{
double speed;
int power;
void speedUp(int s)
{
speed=speed+s;
}
void speedDown(int d)
{
speed=speed-d;
}
void setPower(int p)
{
power=p;
}
int getPower()
{
return power;
}
double getSpeed()
{
return speed;
}
}
User.java
public class User {
public static void main(String args[]){
Vehicle car1,car2;
car1=new Vehicle();
car2=new Vehicle();
car1.setPower(128);
car2.setPower(76);
System.out.printf("car1的功率是:%d\n", car1.getPower());
System.out.printf("car2的功率是:%d\n", car2.getPower());
car1.speedUp(80);
car2.speedUp(80);
System.out.printf("car1目前的速度:%f\n", car1.getSpeed());
System.out.printf("car2目前的速度:%f\n", car2.getSpeed());
car1.speedDown(10);
car2.speedDown(20);
System.out.printf("car1目前的速度:%f\n", car1.getSpeed());
System.out.printf("car2目前的速度:%f\n", car2.getSpeed());
}
}
2.根据下面要求,编写一个Java应用程序:
①定义类StuCard,用到类成员变量(人数)和实例成员变量:学号、姓名、性别、专业、年级、籍贯等;
②初始化的时候用到构造方法,提供两个以上构造方法;
③多个类(业务类StuCard和测试主类),用到包的概念,且分别放到不同的包中;
④用到类成员访问权限,要求类成员变量为Public,实例成员变量为Private;
⑤编写所有数据成员的访问器和修改器(共有的get和set方法);
⑥在主类中实现对业务类StuCard的读、写、修改属性等功能。
在完成以上功能要求的情况下,可以进一步扩展。
package major;
import stucard.StuCard;
public class major {
public static void main(String arg[]){
String index;
StuCard stu = new StuCard();
stu.set_index("45");
index=stu.get_index();
System.out.println(index);
}
}
package stucard;
public class StuCard {
public static int number ;//类变量 ,所有对象共享
private String index ;//实例变量 ,对象独有
private String name ;
private String gender ;
private String major ;
private String grade ;
private String place ;
public int get_number(){
return this.number;
};
public String get_name(){
return this.name;
};
public String get_index(){
return this.index;
};
public String get_gender(){
return this.gender;
};
public String get_major(){
return this.major;
};
public String get_grade(){
return this.grade;
};
public String get_place(){
return this.place;
};
public void set_number(int x){
this.number=x;
};
public void set_name(String x){
this.name=x;
};
public void set_index(String x){
this.index=x;
};
public void set_gender(String x){
this.gender=x;
};
public void set_major(String x){
this.major=x;
};
public void set_grade(String x){
this.grade=x;
};
public void set_place(String x){
this.place=x;
};
public StuCard(){
number=0;
}
public StuCard(String x){
gender="0";
}
}
3.用类描述计算机中CPU的速度和硬盘的容量。要求Java应用程序有4个类,名字分别是PC、CPU、HardDisk和Test,其中Test是主类。
PC类与CPU和HardDisk类关联的UML图如下:
其中,CPU类要求getSpeed()返回speed的值,要求setSpeed(int m)方法将参数m的值赋值给speed。HardDisk类要求getAmount()返回amount的值,要求setAmount(int m)方法将参数m的值赋值给amount。PC类要求setCPU(CPU c)将参数c的值赋值给cpu,要求setHardDisk(HardDisk h)方法将参数h的值赋值给HD,要求show()方法能显示cpu的速度和硬盘的容量。
主类Test的要求:
(1) main方法中创建一个CPU对象cpu,cpu将自己的speed设置为2200;
(2) main方法中创建一个HardDisk对象disk,disk将自己的amount设置为200;
(3) main方法中创建一个PC对象pc;
(4) pc调用setCPU(CPU c)方法,调用时实参是cpu;
(5) pc调用setHardDisk(HardDisk h)方法,调用时实参是disk;
(6) pc调用show()方法。

public class Test {
public static void main(String arg[]){
CPU cpu=new CPU();
cpu.setSpeed(2200);
HardDisk disk=new HardDisk();
disk.setAmount(200);
PC pc=new PC();
pc.setCPU(cpu);
pc.setHardDisk(disk);
pc.show();
}
}
class PC{
CPU cpu;
HardDisk HD;
void setCPU(CPU x){
cpu=x;
}
void setHardDisk(HardDisk x){
HD=x;
}
void show(){
System.out.println(cpu.speed+HD.amount);
}
}
class HardDisk{
int amount;
void setAmount(int x){
amount=x;
}
int getAmount(){
return amount;
}
}
class CPU{
int speed;
void setSpeed(int x){
speed=x;
};
int getSpeed(){
return speed;
};
}
4.共饮同井水:编写程序模拟两个村庄公用同一口井水。编写一个Village类,该类有一个静态的成员变量waterAmount,用于模拟井水的水量;实例变量peopleNumber表示村庄的人数,实例变量name表示村庄的名称。定义相应的成员方法操作成员变量。在主类Land的main()方法中创建两个村庄,设置村庄的名称、人数,通过一个村庄改变waterAmount的值,另一个村庄查看该值的结果。
提示:类变量是该类所有对象的共享数据;一般通过类方法操作类变量。
public class Land {
public static void main(String arg[]){
Village v1=new Village();
Village v2=new Village();
v1.name="village11";
v1.peopleNumber=11;
v2.name="village22";
v2.peopleNumber=22;
v1.waterAmount=8899;
System.out.println(v2.waterAmount);
}
}
class Village {
static int waterAmount;
int peopleNumber;
String name;
}
5.正n边形:在一个正n边形中,所有边的长度都相同,且所有角的度数都相同(即这个多边形是等边等角的)。设计一个名为RegularPolygon的类,该类包括:
①一个名为n的int型私有数据成员表示多边形的边数;
②一个名为side的double型私有数据成员表示多边形的长度;
③一个名为x的double型私有数据成员表示多边形中点的x坐标;
④一个名为y的double型私有数据成员表示多边形中点的y坐标;
⑤一个创建带默认值(n的默认值为3,side的默认值为1,x的默认值为0,y的默认值为0)的正多边形的无参构造方法;
⑥一个能创建带指定边数和边长度,中心在(0,0)的正多边形的构造方法;
⑦一个能创建带指定边数和边长度,中心在(x,y)的正多边形的构造方法;
⑧所有数据成员的访问器和修改器(共有的get和set方法);
⑨一个返回多边形周长的方法getPerimeter();
⑩一个返回多边形面积的方法getArea(),计算正多边形面积的公式是:
S = (n * side *side)/(4 * tan(π/n))
编写一个测试程序,分别使用无参构造方法、RegularPolygon(6, 4)和RegularPolygon(10, 4, 5.6, 7.8)创建三个RegularPolygon对象,输出每个对象的周长和面积。
package major;
import java.lang.Math;
public class major {
public static void main(String arg[]){
double c1,c2,c3,s1,s2,s3;
RegularPolygon r1=new RegularPolygon();
RegularPolygon r2=new RegularPolygon(6,4);
RegularPolygon r3=new RegularPolygon(10,4,5.6,7.8);
c1=r1.getPerimeter();
s1=r1.getArea();
c2=r2.getPerimeter();
s2=r2.getArea();
c3=r3.getPerimeter();
s3=r3.getArea();
System.out.printf("%fl%fl%fl%fl%fl%fl",c1,s1,c2,s2,c3,s3);
}
}
class RegularPolygon{
int n;
double side;
double x;
double y;
double getPerimeter(){
return this.n*this.side;
}
double getArea(){
double s;
s=(this.n*this.side*this.side)/(4*Math.tan(Math.PI/this.n));
return s;
}
RegularPolygon(){
n=3;
side=1;
x=0;
y=0;
}
RegularPolygon(int n_,double side_){
n=n_;
side=side_;
x=0;
y=0;
}
RegularPolygon(int n_,double side_,double x_,double y_){
n=n_;
side=side_;
x=x_;
y=y_;
}
public int getn(){
return this.n;
}
public double getside(){
return this.side;
}
public double getx(){
return this.x;
}
public double gety(){
return this.y;
}
public void setn(int n_){
this.n=n_;
}
public void setside(double side_){
this.side=side_;
}
public void setx(int x_){
this.x=x_;
}
public void sety(int y_){
this.y=y_;
}
}
6.7. 8. 分析程序,给出运行结果
class B {
int x=100,y=200;
public void setX(int x){
x=x;
}
public void setY(int y){
this.y=y;
}
public int getXYSum(){
return x+y;
}
}
public class A{
public static void main(String args[]){
B b=new B();
b.setX(-100);
b.setY(-200);
System.out.printf("sum=%d\n", b.getXYSum());
}
}
6.运行结果:sum=-100
public class A{
public static void main(String args[]){
B b=new B(20);
add(b);
System.out.printf("%d\n", b.intValue());
}
public static void add(B m){
int t=777;
m.setIntValue(t);
}
}
class B{
int n;
B(int n){
this.n=n;
}
public void setIntValue(int n){
this.n=n;
}
int intValue(){
return n;
}
}
7.运行结果:777
class B{
int n;
static int sum=0;
void setN(int n){
this.n=n;
}
int getSum(){
for(int i=1;i<=n;i++)
sum=sum+i;
return sum;
}
}
public class A{
public static void main(String args[]){
B b1=new B(),b2=new B();
b1.setN(3);
b2.setN(5);
int s1=b1.getSum();
int s2=b2.getSum();
System.out.printf("%d\n", s1+s2);
}
}
8.运行结果:27
class B{
int n;
static int sum=0;
void setN(int n){
this.n=n;
}
int getSum(){
for(int i=1;i<=n;i++)
sum=sum+i;
return sum;
}
}
public class A{
public static void main(String args[]){
B b1=new B(),b2=new B();
b1.setN(3);
b2.setN(5);
int s1=b1.getSum();
int s2=b2.getSum();
System.out.printf("%d\n", s1+s2);
}
}
9.10.程序改错:将下面给出的程序修改成正确的代码
9.正确代码
class A {
static int x=100;
static long y=200;
public static void main(String args[]){
x=-23;
}
public void f(){
y=300;
}
}
10.正确代码
class Tom{
int x=120;
int y=20;
int z=11;
void f(){
x=200;
System.out.printf("%d\n", x);
}
void g(){
x=200;
System.out.printf("%d\n", x);
}
}
public class A{
public static void main(String args[]){
Tom tom=new Tom();
tom.x=22;
tom.y=33;
tom.z=55;
tom.f();
tom.g();
}
}
更多推荐



所有评论(0)