实验目的与要求:
实验目的:熟悉面向对象编程中package,import等语句的使用。
实验要求:
(1).编写一个Grade类和一个Student类。Grade类中包含有三个Student类的实例:张三、李四和王五。调用Grade类的实例中的getStudentNames方法时,能够输出班中所有学生的名字。在报告中附上程序截图、运行结果和详细的文字说明。(20分)
(2).定义一个包,在该包中定义一个类并输出“Hello, Java”字符串。在报告中附上程序截图、运行结果和详细的文字说明。(20分)
(3).在一个包中定义一个默认访问权限控制的类DefaultClass,然后在该包以及另一个包中分别定义类来测试DefaultClass类中的protected和public数据成员的访问控制能力。在报告中附上程序截图、运行结果和详细的文字说明。(20分)
(4).在一个包中定义一个public访问权限控制的类PublicClass,然后在该包以及另一个包中分别定义类来测试PublicClass类中的protected和public数据成员的访问控制能力。在报告中附上程序截图、运行结果和详细的文字说明。(20分)
(5).把Grade类和Student类放进cn.edu.szu.csse包中。编写一个测试类,在源代码中用import语句引入cn.edu.szu.csse包中的所有类,并对它们所包含的方法进行测试。在报告中附上程序截图、运行结果和详细的文字说明。(20分)
(1).编写一个Grade类和一个Student类。Grade类中包含有三个Student类的实例:张三、李四和王五。调用Grade类的实例中的getStudentNames方法时,能够输出班中所有学生的名字。在报告中附上程序截图、运行结果和详细的文字说明。(20分)
设计:Grade类中Student类实例设置为可变长度的
package Hw5;
public class Student {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package Hw5;
public class Grade {
private Student[] students;
public void getStudentNames(){
System.out.println("所有学生名字如下:");
for (Student i:students) {
System.out.println(i.getName());
}
}
public Grade(String... studentName){
students = new Student[studentName.length];
for (int i = 0; i < studentName.length; i++) {
students[i] = new Student();
students[i].setName(studentName[i]);
}
}
public static void main(String[] args) {
String[] studentName = {"张三","李四","王五"};
Grade grade = new Grade(studentName);
grade.getStudentNames();
}
}
(2).定义一个包,在该包中定义一个类并输出“Hello, Java”字符串。在报告中附上程序截图、运行结果和详细的文字说明。(20分)
设计:在包外实现一个测试类用来调用Hello Java
package Hw5.HelloJava;
public class HelloJava {
public void display(){
System.out.println("Hello Java");
}
}
package Tester;
import Hw5.HelloJava.HelloJava;
public class Test1 {
public static void main(String[] args) {
HelloJava helloJava = new HelloJava();
helloJava.display();
}
}
(3).在一个包中定义一个默认访问权限控制的类DefaultClass,然后在该包以及另一个包中分别定义类来测试DefaultClass类中的protected和public数据成员的访问控制能力。在报告中附上程序截图、运行结果和详细的文字说明。(20分)
设计:多测试default和private类型的数据成员
package Hw5;
class DefaultClass {
public int pb_member;
protected int pt_member;
int d_member;
private int pv_member;
}
package Hw5;
public class SamePackageTester {
public static void main(String[] args) {
// PublicClass publicClass = new PublicClass();
// publicClass.pb_member = 1;
// publicClass.pt_member = 1;
// publicClass.d_member = 1;
// publicClass.pr_member = 1;
}
}
package Tester;
import Hw5.*;
public class DiffPackageTester {
public static void main(String[] args) {
// PublicClass publicClass = new PublicClass();
// publicClass.pb_member = 1;
// publicClass.pt_member = 1;
// publicClass.d_member = 1;
// publicClass.pr_member = 1;
}
}
上面这段代码是会报错的,因为题目的要求就是让我们探索
(4).在一个包中定义一个public访问权限控制的类PublicClass,然后在该包以及另一个包中分别定义类来测试PublicClass类中的protected和public数据成员的访问控制能力。在报告中附上程序截图、运行结果和详细的文字说明。(20分)
设计:多测试default和private类型的数据成员
package Hw5;
public class PublicClass {
public int pb_member;
protected int pt_member;
int d_member;
private int pv_member;
}
package Hw5;
public class SamePackageTester {
public static void main(String[] args) {
// PublicClass publicClass = new PublicClass();
// publicClass.pb_member = 1;
// publicClass.pt_member = 1;
// publicClass.d_member = 1;
// publicClass.pr_member = 1;
}
}
package Tester;
import Hw5.*;
public class DiffPackageTester {
public static void main(String[] args) {
// PublicClass publicClass = new PublicClass();
// publicClass.pb_member = 1;
// publicClass.pt_member = 1;
// publicClass.d_member = 1;
// publicClass.pr_member = 1;
}
}
这段同理
(5).把Grade类和Student类放进cn.edu.szu.csse包中。编写一个测试类,在源代码中用import语句引入cn.edu.szu.csse包中的所有类,并对它们所包含的方法进行测试。在报告中附上程序截图、运行结果和详细的文字说明。(20分)
设计:Grade类中Student类实例设置为可变长度的
package cn.edu.szu.csse;
import Hw5.Student;
public class Grade {
private Hw5.Student[] students;
public void getStudentNames(){
System.out.println("所有学生名字如下:");
for (Hw5.Student i:students) {
System.out.println(i.getName());
}
}
public Grade(String... studentName){
students = new Hw5.Student[studentName.length];
for (int i = 0; i < studentName.length; i++) {
students[i] = new Student();
students[i].setName(studentName[i]);
}
}
public void setStudents(String... studentName){
students = new Hw5.Student[studentName.length];
for (int i = 0; i < studentName.length; i++) {
students[i] = new Student();
students[i].setName(studentName[i]);
}
}
@Override
public String toString() {
String temp = "";
for (Student student : students) {
temp+=student.getName()+",";
}
return "Grade{" +
"students=" + temp +
'}';
}
}
package cn.edu.szu.csse;
public class Student {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
'}';
}
}
package Tester;
import cn.edu.szu.csse.*;
public class Test1 {
public static void main(String[] args) {
Grade grade = new Grade();
String[] strings = {"张三","李四","王五"};
grade.setStudents(strings);
System.out.println(grade);
}
}