一、 实验目的
理解面向对象封装性、继承性和多态性的基本概念,掌握声明类、封装类、继承类以及运行时多态性的实现方法。
二、实验内容
- 请按照以下要求设计一个Student类,并进行测试。 要求如下: 1)Student类中包含姓名、成绩两个属性。
2)分别给这两个属性定义两个方法,一个方法用于设置值,另一个方法用于获取值。
3)Student类中定义一个无参的构造方法和一个接受两个参数的构造方法,两个参数分别为姓名和成绩属性赋值。
4)在测试类中创建两个Student对象,一个使用无参构造方法,然后调用方法给姓名和成绩赋值,另一个使用有参的构造方法,在构造方法中给姓名和成绩赋值。
(提示:注意成员变量和成员方法的访问权限设置,使用this解决成员变量与局部变量名称冲突的问题)
package cn.edu.dgut.Exam01;
public class Exam01 {
public static void main(String[] args) {
Student stu1=new Student();
Student stu2=new Student("小颖",96);
stu1.setName("韩强");
stu1.setGrade(98);
stu1.getGrade();
stu2.getGrade();
Student p2=new Student("张三");
}
}
package cn.edu.dgut.Exam01;
public class Student {
private String name;
private double grade;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getGrade() {
System.out.println(name + "的成绩是" + grade);
return grade;
}
public void setGrade(double grade) {
if (grade < 0) System.out.println("输入的成绩不可为负数");
else this.grade = grade;
}
public Student() {
}
public Student(String name, double grade) {
this.name = name;
this.grade = grade;
}
public Student(String name) {
System.out.println(name);
}
}
- (1) 设计一个类,设计它的一个无参数构造方法,构造方法中打印一条消息。main方法创建这个类的一个对象,观察打印结果。
(2)在练习1)的基础上增加一个重载的构造方法,采用一个String参数,并在构造方法中把这个String消息打印出来。创建这个类的对象,观察打印结果。
(3) 以练习2)创建的类为基础上,创建属于它的实例对象的一个数组,但不要实际创建对象并分配到数组里。运行程序时,注意是否打印出来自构建方法调用的初始化消息?为数组中每个变量创建对象,观察打印结果?
package cn.edu.dgut.Exam02;
import cn.edu.dgut.Exam01.Student;
public class Demo1 {
public Demo1(){
System.out.println("无参的构造方法被调用了!");
}
public static void main(String[] args) {
Demo1 p1=new Demo1();
Demo1[] p=new Demo1[3];
p[0]=new Demo1();
p[1]=new Demo1();
p[2]=new Demo1();
}
}
- 请按照以下要求设计一个Outer类。 要求如下:
1)定义一个外部类Outer,并在该类中定义一个静态内部类Inner。
2)在内部类中定义一个静态变量staticField和一个静态staticMethod(),并将该变量的值设置为"静态内部类的静态变量",该方法中输出"静态内部类的静态方法"。
3)定义一个测试类,在main()方法中输出staticField的值,并且调用静态方法staticMethod()。
package cn.edu.dgut.Exam03;
public class Outer {
static class Inner{
static String Field="静态内部类的静态变量";
static void Method(){
System.out.println("静态内部类的静态方法");
}
}
}
package cn.edu.dgut.Exam03;
public class test {
public static void main(String[] args) {
System.out.println(Outer.Inner.Field);
Outer.Inner.Method();
}
}