目录
写在前面
- 关于题目
涉及Java语言基础、类与对象基础、类的设计与封装、类继承与接口的设计、集合框架与泛型、异常类、嵌套类、枚举类型、输入/输出流、多线程与网络编程基础等大内容,知识点包括标识符、关键字与字面值、变量与类型、运算符与表达式、语句、类与对象、Math类、字符串:String类与StringBuffer类、数组对象、包装类、大数处理与BigInteger类、时间处理、类设计的基本思路、矩形类的初步设计、类声明与域的定义……
题目来自实验课老师布置,由于课本不在手边,所以涉及课本例题的,没有办法提供原例题。 - 关于答案
主要是我作业里自己写的代码,如果和老师发的参考答案差别较大,会发上两个答案。能力有限,如果有错误的地方,欢迎指正。 - 持续更新中……
使用教材
- Java面向对象程序设计
出版社:高等教育出版社
作者: 苏健
版次:1
重点项目: “十一五”国家规划课题研究成果
实验八:类的设计与封装
- 找出下列代码的问题并尝试改正,并说明错误原因。
class Example {
int i;
int j;
Example(){
System.out.println("Example( )");
this(0,0); //只能在构造器的第一句代码中使用this(参数)
}
Example(int i){
System.out.println("Example(int i)");
j = 0;
i = i;
}
public Example(int i, int j) {
System.out.println("Example(int i,int j)");
this(i); //同上,并且不能在方法中通过this(参数)调用构造器
j = j;
}
void Example(double i) {
i = (int)i;
j = 0;
}
}
//注意局部变量和成员变量的关系,形参是局部变量,如果两者同名,在局部变量的作用域范围内,成员变量会被隐藏,需要使用this来访问同名成员变量。
- 阅读以下两段代码并给出其运行结果,然后上机验证。
class Frog {
static int frogCount = 0;
public Frog() {
frogCount += 1;
}
public static void main(String[] args) {
new Frog();
new Frog();
new Frog();
System.out.println("Frog count is now "+ frogCount);
}
}
//运行结果:
Frog count is now 3
class Frog {
int frogCount = 0;
public Frog() {
frogCount += 1;
}
public static void main(String[] args) {
new Frog();
new Frog();
new Frog();
System.out.println("Frog count is now "+ frogCount);
}
}
//运行出错,因为frogCount是实例变量,而静态方法不能访问实例变量。
- 阅读以下代码,不改变x的定义,改正错误并尝试输出x的值。
class Foo {
int x = 3;
public static void main(String[] args) {
System.out.println("x is "+x);
}
}
//运行结果:
x is 3
//老师参考答案
Foo f = new Foo( );
System.out.println("x is " + f.x);
- 判断下列代码的输出结果。
public class T37 {
static {
System.out.print("C");}
{
System.out.print("A");}
T37(){
System.out.print("B");}
public static void main(String[] args) {
T37 t1 = new T37();
T37 t2 = new T37();
}
}
//运行结果:
CABAB
- 从类设计者的角度,实现如下要求的Student类。然后从类使用者的角度,新建若干Student对象,并使用Student的方法。
1.每个对象需要保存“身份证号/ 姓名/性别/专业/住址”等信息,其中身份证/姓名和性别的值不可为空。(构造器应该怎么设计?)
2.提供返回对象主要信息的函数String toString( );
3.提供返回对象年龄的函数;
4.提供函数输出所有的Student对象个数(参考课本的static nextid)。
import java.util.Calendar;
import java.util.Date;
class Student{
String idCard;
String name;
String gender;
String major;
String address;
int id;
static int nextId;
Student(String idCard,String name,String gender,String major,String address){
this.idCard = idCard;
this.name = name;
this.gender = gender;
this.major = major;
this.address = address;
id = nextId;
nextId++;
}
Student(Student stu) {
this(stu.idCard,stu.name,stu.gender,stu.major,stu.address);