1、在 Teacher 类和 Student 类的共同父类中编写一个带参数的构造函数,然后分别在 Teacher 类和 Student 类中用super 给父类构造函数传参数。再编写一个输出详细信息的函数,使之既能够传入一个 Student 对象进行输出,也能够传入一个 Teacher 对象进行输出。
public class sixExecisebackup {
public static void polymor(fa obj){ obj.print();
}
public static void main(String[] args) {
Teacher tests=new Teacher(001,27,"王海","教授",'男');
polymor(tests);
Student test02=new Student(2021,18,"小朱","郑州经贸学院",'男');
polymor(test02);
}
}
class fa{
protected int num,age;
protected String name; char sex;
fa(int num,int age,String name,char sex){ this.num=num;
this.age=age; this.name=name; this.sex=sex;
}
public void print(){}
}
class Teacher extends fa{
protected String range;
Teacher(int num,int age,String name,String range,char sex){ super(num,age,name,sex);
this.range=range;
}
public void print(){
System.out.println("编号:"+num+"姓名:"+name+"年龄:"+age+"性别"+sex+"职称:"+range);
}
}
class Student extends fa{
protected String address;
Student(int num,int age,String name,String address,char sex){ super(num,age,name,sex);
this.address=address;
}
public void print(){
System.out.println("编号:"+num+"姓名:"+name+"年龄:"+age+"性别"+sex+"职称:"+address);
}
}
用到继承、super传参、多态
2、利用成员覆盖(重写)对上述类中的功能进行如下修改:将 fun1 功能替换成自己编写的新功能:输出“新功能 1”,将 fun2 功能后面增加一个功能:输出“新增功能 2”,将 fun3 功能屏蔽,将 fun4 功能保持原样。
public class zwb102402 {
public static void main(String[] args) { override test05=new override(); test05.fun1();
test05.fun2(); test05.fun4();
}
}
class previousFunction{
public void fun1(){System.out.println("原始功能 1");} public void fun2(){System.out.println("原始功能 2");} public void fun3(){System.out.println("原始功能 3");} public void fun4(){System.out.println("原始功能 4");}
}
class override extends previousFunction{
public void fun1(){System.out.println("新功能 1");} public void fun2(){
super.fun2();
System.out.println("新增功能 2");
}
public void fun4(){super.fun4();}
}
函数的重写/成员覆盖:子类的成员函数与父类相同(函数名、参数列表、返回类型相同),最后调用时会调用子函数的成员函数;
3、编写一个 Book 类,含有书名、ISBN 号、作者、定价几个成员变量。通过使用 Object 类的两种方法实现:编写 toString 函数将其详细信息用字符串形式输出;编写equals 函数自定义两个 Book 对象相等的条件为书名和ISBN 号相等
public class zwb102404 {
public static void main(String[] args) {
Book test1=new Book("哈利波特与魔法石","978-0333A-3322BVN345","罗琳",45);
Book test2=new Book("哈利波特与魔法石","978-0333A-3322BVN345","罗琳",45);
System.out.println(test1.equals(test2));
}
}
class Book {
protected String book, num, writer; int money;
Book(String book, String num, String writer, int money) {
this.book = book;
this.num = num; this.writer = writer; this.money = money;
}
public boolean equals(Book test){
if(book.equals(test.book)&&num.equals(test.num)){
return true;
}
return false;
}
public String toString(){
return "书名:"+book+"编号:"+num+"作者:"+writer+"金额:"+money;
}
}
object的两种方法:toString、equals;
equals与==不同;