目录
- 第8章 习题
- 1.举例说明可见性为protected方法和可见性为public方法的区别。举例说明this和super的应用场合。
- 2. 每一个类都有toString方法?它是从哪里来的?
- 3. equals、hashCode、finalize、clone和getClass方法定义在哪个类里?
- 4.子类继承了父类的哪些成员?子类在什么情况下隐藏父类的成员变量和方法?
- 5.定义一个Person类和它的两个子类Student 和Employee。Employee有子类Faculty 和Staff。Person的属性包括:姓名、地址、电话号码和电子邮件地址。Student的属性包括:班级、状态(1年级、2年级、3年级和4年级),将这些状态定义为常量。Employee类包括的属性:姓名、工资、受雇日期。Faculty的属性包括:办公时间和级别。Staff的属性有职务。要求每个类对tostring方法重写,重写后的方法具有显示类名和人名。
第8章 习题
1.举例说明可见性为protected方法和可见性为public方法的区别。举例说明this和super的应用场合。
package ch8;
import classFather.*;
public class u8p1 {
//第八章第一题
/**
* @param args
*/
public static void main(String[] args) {
classFather.Pubx(); //u8p1class的public方法在不同的包中可以直接访问
//classFather.Prox(); u8p1class的protected方法在不同包中不可访问
classSon a = new classSon(); //将子类实例化并且调用子类方法
a.pre();
}
}
//第八章第一题子类的定义
class classSon extends classFather {
String x="u8p1classSon";
public void pre (){
classFather.Pubx(); //的public方法在不同的包中可以直接访问
classFather.Prox(); //的protected方法在子类中可直接访问
System.out.println(super.x); //调用父类的x
System.out.println(this.x); //调用本类的x
}
}
创建另外一个包
package classFather;
//第八章第一题 父类的定义
public class classFather {
/**
* @param args
*/
protected String x="u8p1class";
protected static void Prox(){};
public static void Pubx(){};
}
2. 每一个类都有toString方法?它是从哪里来的?
- 答:Object类是所有类的父类,toString()方法被所有子类继承
3. equals、hashCode、finalize、clone和getClass方法定义在哪个类里?
- 答:Object类中
4.子类继承了父类的哪些成员?子类在什么情况下隐藏父类的成员变量和方法?
- 答:
(1)子类继承了父类中除构造方法以外的所有成员;
(2)当子类的成员变量和成员方法与父类同名时,父类的成员在子类中被隐藏;
5.定义一个Person类和它的两个子类Student 和Employee。Employee有子类Faculty 和Staff。Person的属性包括:姓名、地址、电话号码和电子邮件地址。Student的属性包括:班级、状态(1年级、2年级、3年级和4年级),将这些状态定义为常量。Employee类包括的属性:姓名、工资、受雇日期。Faculty的属性包括:办公时间和级别。Staff的属性有职务。要求每个类对tostring方法重写,重写后的方法具有显示类名和人名。
public class unit_08 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//u8p1();
Person a = new Person("li","GZ","13352524455","19@qq.com");
Student b = new Student("li","GZ","13352524455","19@qq.com",1,2);
Employee c = new Employee("li","GZ","13352524455","19@qq.com",
2000.0,2019,9,16);
Faculty d = new Faculty("li","GZ","13352524455","19@qq.com",2000.0,
2019,9,16,2020,12,13,1);
Staff e = new Staff("li","GZ","13352524455","19@qq.com",2000.0,
2019,9,16,"teacher");
System.out.println(a.toString());
System.out.println(b.toString());
System.out.println(c.toString());
System.out.println(d.toString());
System.out.println(e.toString());
}
}
class Person {
protected String name; //姓名
protected String address; //地址
protected String tel; //手机号码
protected String email; //邮件
//构造方法
Person(String Name, String Address,String Tel,String Email){
name = Name;
address = Address;
tel = Tel;
email = Email;
}
Person(String Address,String Tel,String Email){
address = Address;
tel = Tel;
email = Email;
}
public String toString(){
return "Person@名字是:"+name;
}
}
class Student extends Person{
int classStu; //班级
int gradeStu; //年级
static final String claasId1 = "1年级";
static final String claasId2 = "2年级";
static final String claasId3 = "3年级";
static final String claasId4 = "4年级";
//构造方法
//除了构造方法子类继承了父类的 成员变量,方法
Student(String Name, String Address,String Tel,String Email,
int Class,int Grade){
super(Name,Address,Tel,Email);//显示调用父类构造方法
classStu = Class;
gradeStu = Grade;
}
public String toString(){
return "Student@名字是:"+name;
}
}
class Employee extends Person {
String name; //姓名
double salary; //工资
date hiredate; //受雇日期
//构造方法
Employee(String Name, String Address,String Tel,String Email,
double Salary ,int Year, int Mon , int Day){
super(Address,Tel,Email); //显示调用父类构造方法
name = Name;
salary = Salary;
hiredate = new date(Year,Mon,Day);
}
public String toString(){
return "Employee@名字是:"+name;
}
}
class Faculty extends Employee{
date officetDate; //办公时间
int lv; //等级
Faculty(String Name, String Address,String Tel,String Email,
double Salary ,int Year, int Mon , int Day,
int OYear , int OMon,int ODay,int Lv){
super(Name,Address,Tel,Email,Salary,Year,Mon,Day);
officetDate = new date(OYear,OMon,ODay);
lv = Lv;
}
public String toString(){
return "Faculty@名字是:"+name;
}
}
class Staff extends Employee{
String post; //职务
Staff(String Name, String Address,String Tel,String Email,
double Salary ,int Year, int Mon , int Day,
String Post){
super(Name,Address,Tel,Email,Salary,Year,Mon,Day);
post = Post;
}
public String toString(){
return "Staff@名字是:"+name;
}
}
class date{
int year; //年
int mon; //月
int day; //日
date(int Year,int Mon,int Day){
year = Year;
mon = Mon;
day = Day;
}
}