定义一个Person类,它包括的属性有“姓名”和“性别”
为Person类派生出一个子类Student类,为Student子类添加两个属性年龄和成绩等级(用A,B,C,D,E表示)
在子类中打印出学生的姓名、性别、年龄及成绩等级
写一个测试类,创建Student对象,打印学生信息。
以下代码用三种不同方式实现代码类实现方式一:
// 第一种方法
public class StudentTest {
public static void main(String[] args) {
Student s = new Student("张三", '男', 30, 'B');
s.printInfo();
}
}
class Person {
String name;// 修饰符为默认
char sex;// 修饰符为默认
public Person(String name, char sex) {
this.name = name;
this.sex = sex;
}
}
class Student extends Person {
int age;// 修饰符为默认
char grade;// 修饰符为默认
public Student(String name, char sex, int age, char grade) {
super(name, sex);
this.age = age;
this.grade = grade;
}
public void printInfo() {// 该方法的修饰符为非私有(public/默认/protected均可)
// 姓名等属性都是默认修饰符,所以可以在子类中直接访问
System.out.println("姓名:" + name);
System.out.println("性别:" + sex);
System.out.println("年龄:" + age);
System.out.println("成绩等级:" + grade);
}
}
代码类实现方式二:
//第二种方法
public class StudentTest {
public static void main(String[] args) {
Student s = new Student("张三", '男', 30, 'B');
s.printInfo();
}
}
class Person {
private String name;
private char sex;
public Person(String name, char sex) {
this.name = name;
this.sex = sex;
}
public void printInfo() {
System.out.println("姓名:" + name);
System.out.println("性别:" + sex);
}
}
class Student extends Person {
private int age;
private char grade;
public Student(String name, char sex, int age, char grade) {
super(name, sex);
this.age = age;
this.grade = grade;
}
public void printInfo() {
// 姓名等属性都是private修饰符,所以可以在子类中无法直接访问,
// 调用父类的printInfo()方法来打印父类的private属性值。
super.printInfo();
System.out.println("年龄:" + age);
System.out.println("成绩等级:" + grade);
}
}
代码类实现方式三:
//第三种方法
public class StudentTest {
public static void main(String[] args) {
Student s = new Student("张三", '男', 30, 'B');
s.printInfo();
}
}
class Person {
protected String name;
protected char sex;
public Person(String name, char sex) {
this.name = name;
this.sex = sex;
}
public String toString() {
return "姓名:" + name + "n" +"性别:" + sex + "n";
}
}
class Student extends Person {
protected int age;
protected char grade;
public Student(String name, char sex, int age, char grade) {
super(name, sex);
this.age = age;
this.grade = grade;
}
public void printInfo() {
// 姓名等属性都是protected修饰符,可以在子类中直接访问,
// 也可以调用父类的toString()方法得到父类属性的值,再和子类的属性值做字符串连接
// 然后再打印拼接后的字符串。
String s = super.toString() + "年龄:" + age + "n" + "成绩等级:" + grade;
System.out.println(s);
}
}
效果实现:



