速(尚)学堂第四章Java面向对象基础章末作业自写答案
第一次在CSDN发文章,自己还是一个大二学生,正在学JAVA,学习了第四章后,对章末作业做了解答,全部手工自己写的,选择题也有一些自己的看法,如有错误欢迎指正,共同进步,高手勿喷,见笑了。
选择题
1.B //JAVA程序中就算没有定义构造器(即构造方法或构造函数),编译器也会自动定义一个无参构造函数。
2.D //创建了两个引用类型的变量pt1,pt2,分别指向带实际参数(3,3)、(4,4)的对象,输出pt1.x即输出pt1指向对象的x值为3,输出Pt2.x即输出pt2指向对象的x值为4,故输出pt1.x+pt2.x结果为7
3.AC //java的main主方法就是静态的,若使用类中非静态方法,必须用new关键字创建对象后才能使用该方法,若使用静态方法,可以直接使用故A对,B错。静态方法可以直接使用类名调用,格式“类名.该静态方法名”,C对。在静态方法中不能使用this关键字,this本质为目前创建好的对象,而静态方法是在方法区(特殊的堆)内,对象不在方法区内,不能使用this来访问对象,故D错
4.AC //类方法即静态方法,由第三题分析可知,静态方法不能使用this关键字,A错。类方法即静态方法,静态方法调用静态方法可以直接调用,故B对。使用其他类中的类方法,同一包中可以通过“类名.类方法名”的方式使用那个,不在同一个包中时需导包然后“类名.类方法名”使用,C错。类方法即静态方法,实例方法即普通非静态方法,静态方法中调用非静态方法需要创建对象,故D对
5.C //创建了引用类型的变量t,使用new创建了对象,并把对象的地址附给了t,t就指向了该对象,执行count1方法,修改了对象中的count的值,变为10,count1方法结束,栈帧销毁,但是变量的值被覆盖,故再执行count2,count的值还是为10.故选C
编码题
- 编写 Java 程序用于显示人的姓名和年龄。定义一个人类Person。 该类中应该有两个私有属性: 姓名 (name) 和年龄 (age) 。定义构造方法用来初始化数据成员。再定义显示(display()) 方法将姓名和年龄打印出来。在 main 方法中创建人类的实例然后将信息显示。
/*
* 编写 Java 程序用于显示人的姓名和年龄。
* 定义一个人类Person。 该类中应该有两个私有属性: 姓名 (name) 和年龄 (age) 。
* 定义构造方法用来初始化数据成员。再定义显示(display()) 方法将姓名和年龄打印出来。
* 在 main 方法中创建人类的实例然后将信息显示
*/
class Person{
private String name;
private int age;
//构造方法
public Person(String name, int age) {
this.age = age;
this.name = name;
}
void display() {
System.out.println("姓名:"+name);
System.out.println("年龄:"+age);
}
}
public class FinalTest {
public static void main(String[] args) {
Person P = new Person("这里是名字", 999);
P.display();
}
}
2. 定义一个圆类——Circle,在类的内部提供一个属性:半径®,同时 提供 两个 方 法 : 计算 面积 ( getArea() ) 和 计算 周长(getPerimeter()) 。 通过两个方法计算圆的周长和面积并且对计算结果进行输出。最后定义一个测试类对 Circle 类进行使用。
/**
* 章末测试
* @author 皮
*
*/
/*
* 定义一个圆类——Circle,在类的内部提供一个属性:半径(r)
* 同时 提供 两个 方 法 : 计算 面积 ( getArea() )和 计算 周长(getPerimeter()) 。
* 通过两个方法计算圆的周长和面积并且对计算结果进行输出。最后定义一个测试类对 Circle 类进行使用。
*/
class Cirle{
int r;
public Cirle(int r) {
this.r = r;
}
public int getArea() {
int area = (int)(Math.PI*r*r);
System.out.println("该圆的面积为:"+area);
return area;
}
public int getPerimeter() {
int perimeter = (int)(2*Math.PI*r);
System.out.println("该圆的周长为:"+perimeter);
return perimeter;
}
}
public class FinalTest02 {
public static void main(String[] args) {
Cirle C = new Cirle(10);
C.getArea();
C.getPerimeter();
}
}
3. 构造方法与重载:定义一个网络用户类,信息有用户 ID、用户密码、 email 地址。在建立类的实例时把以上三个信息都作为构造函数的参数输入, 其中用户 ID 和用户密码时必须缺省时 email地址是用户 ID 加上字符串"@gameschool.com"。
/**
* 章末测试
* @author 皮
*
*/
/*
* 构造方法与重载:定义一个网络用户类,信息有用户 ID、用户密码、 email 地址。
* 在建立类的实例时把以上三个信息都作为构造函数的参数输入,
* 其中用户 ID 和用户密码时必须缺省时 email地址是用户 ID 加上字符串"@gameschool.com"。
*/
class NetUser{
int id;
String pwd;
String emailAdd;
public NetUser(int id, String pwd) {
this.id = id;
this.pwd = pwd;
emailAdd = this.id+"@gameschool.com";
}
public NetUser(int id,String pwd,String emailAdd) {
this(id,pwd);//调用了上面定义的构造器
this.emailAdd = emailAdd;
}
public void Test() {
System.out.println(id+"\t"+pwd+"\t"+emailAdd);
}
}
public class FinalTest03 {
public static void main(String[] args) {
NetUser n = new NetUser(123456,"0001n");
NetUser n1 = new NetUser(123456, "0002n", "00112233@qq.com");
n.Test();
n1.Test();
}
}