例4.1
JPeople.java

public class JPeople  
{
    String name;
    char sex;
    int age;

    public String getName()
    {
        return name;
    }

    public char getSex()
    {
        return sex;
    }

    public int getAge()
    {
        return age;
    }
}

例4.2
JStudent.java

public class JStudent extends JPeople  
{
    String studentID;
    String major;
    String name; // 定义一个和父类成员同名的成员变量name

    public String getName() //定义一个和父类成员同名的成员方法getName()
    {
        return "王五";
    }


    public String getName2() 
    {
        super.name="张三";    //获得父类被隐藏的成员变量name
        return super.getName();  //调用父类被隐藏的成员方法getName()
    }

    public String getMajor()
    {
        return major;
    }

    public String getStudentID()
    {
        return studentID;
    }
}

例4.3
JTeacher.java

public class JTeacher extends JPeople  
{
    String teacherID;
    String department;

    public String getDepartment()
    {
        return department;
    }

    public String getTeacherID()
    {
        return teacherID;
    }
}

例4.4
JStudentTest.java

public class JStudentTest  
{

    public static void main(String[] args)
    {
        JStudent student = new JStudent();
        JPeople p1 = new JStudent();
        JPeople p2 = new JTeacher();
        student.name = "赵六";
        System.out.println("学生姓名是: " + student.name);
        System.out.println("学生姓名是: " + student.getName());
        System.out.println("学生姓名是: " + student.getName2());
    }
}

例4.5
JMiddleStudent.java

public class JMiddleStudent extends JStudent  
{
    public static void main(String[] args)
    {
        JMiddleStudent middleStudent = new JMiddleStudent();
        System.out.println("name ="+middleStudent.name);
        System.out.println("major ="+middleStudent.major);
        System.out.println("age ="+middleStudent.getAge());
    }
}

例4.6
JPeople2.java

public class JPeople2  
{
    private String name;
    private char sex;
    private int age;

    public JPeople2(String name, char sex, int age)
    {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public String getDetails()
    {
        return "Name:" + name + "\nsex:" + sex + "\nage: " + age;
    }

}

例4.7
JStudent2.java

public class JStudent2 extends JPeople2  
{
    private String studentID;
    private String major;

    public JStudent2(String name, char sex, int age, String stuID, String major)
    {
        super(name, sex, age);
        this.studentID = stuID;
        this.major = major;
    }

    public String getDetails()
    {
        return super.getDetails() + "\nStudentID:" + studentID + "\nMajor:"
                + major;
    }

    public String getDetails(String s)
    {
        return super.getDetails() + "\nStudentID:" + studentID + "\nMajor:"
                + major;
    }

    public static void main(String[] srgs)
    {
        JStudent2 s = new JStudent2("张三", '男', 22, "2013030507", "计算机");
        System.out.println(s.getDetails());
    }
}

例4.8
JPersonTest.java

class JPerson  
{
    int personId;
    public JPerson()
    {
        personId=10;
    }
}

class JSubPerson extends JPerson  
{

}

public class JPersonTest  
{
    public static void main(String args[])
    {
        JSubPerson j1 = new JSubPerson();
        System.out.println(j1.personId);
    }
}

例4.9
JPersonTest2.java

class JPerson2  
{
    int personId;
    public JPerson2()
    {
        personId=10;
        System.out.println("现在personId的值是"+personId);
    }
}

class JSubPerson2 extends JPerson2  
{

    public JSubPerson2(int i)
    {
        personId=i;
        System.out.println("现在personId的值是"+personId);
    }
}

public class JPersonTest2  
{
    public static void main(String args[])
    {
        JSubPerson2 j2 = new JSubPerson2(100);
    }
}

例4.10 JPersonTest3.java

class JPerson3  
{
    int personId;

    public JPerson3()
    {
    }

    public JPerson3(int i)
    {
        personId = i;
        System.out.println("现在personId的值是" + personId);
    }

    public JPerson3(int i, int j)
    {
        personId = i + j;
        System.out.println("现在personId的值是" + personId);
    }

}

class JSubPerson3 extends JPerson3  
{
    public JSubPerson3()
    {
    }

    public JSubPerson3(int i)
    {
        super(i); // 该语句只能位于构造方法第一行
        // super(i,1000);
        System.out.println("现在personId的值是" + personId);
    }

}

public class JPersonTest3  
{
    public static void main(String args[])
    {
        JSubPerson3 j3 = new JSubPerson3(100);
        JSubPerson3 j4 = new JSubPerson3();
    }
}