类与类的继承—个人通讯录(一)
设计简单的个人个人通讯录系统(一),用于存储联系人信息,实现对联系人按照基本联系人、家人、工作伙伴等进行分类存储,具体要求如下:
1.联系人的基本信息包括姓名、性别、电子邮件及若干个练习电话;
2.家人除了具有基本信息之外,还需要定义家庭地址及生日;
3.工作伙伴除了具有联系人基本信息之外,还要添加所在公司及职称、职务信息
思路
首先建立四个类分别是:联系人类(Contract),家人类(Family)、工作伙伴类(Partner)、公司类(Company)其中家人继承联系人类、工作伙伴类继承联系人类和公司类
实现步骤:
联系人类(Contract)
package address_book01;
//联系人类:姓名、性别、电子邮件及若干个练习电话;
public class Contract {
private String name;
private String gender;
private String email;
private String[] phones;
public Contract(String name, String gender, String email, String[] phones) {
this.name = name;
this.gender = gender;
this.email = email;
this.phones = phones;
}
//
public Contract(String name, String[] phones) {
this.name = name;
this.phones = phones;
}
public Contract() {
}
public String getName() {
return name;
}
public void setName(String name) {
if(name ==null || name.equals("")){
return;
}
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String[] getPhones() {
return phones;
}
public void setPhones(String[] phones) {
this.phones = phones;
}
public void dispaly(){
System.out.println("姓名:" + getName() + "\t性别:" + getGender() + "\temail:" + getEmail());
System.out.print( "联系电话:" );
for (int i = 0 ; i < phones.length; i++){
System.out.print(phones[i] + "\t");
}
}
}
家人类(Family)
package address_book01;
import java.util.Date;
public class Family extends Contract{
private Date birthday;
private String adress;
public Family() {
}
public Family(String name, String[] phones) {
super(name, phones);
}
public Family(String name, String gender, String email, String[] phones, Date birthday, String adress) {
super(name, gender, email, phones);
this.birthday = birthday;
this.adress = adress;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getAdress() {
return adress;
}
public void setAdress(String adress) {
this.adress = adress;
}
@Override
public void dispaly() {
super.dispaly();
System.out.println("生日:" + getBirthday() + "\t家庭地址: " + getAdress());
}
}
公司类(Company)
package address_book01;
public class Company {
String name;
String adress;
String phone;
String fax;
public Company() {
}
public Company(String name, String adress, String phone, String fax) {
this.name = name;
this.adress = adress;
this.phone = phone;
this.fax = fax;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAdress() {
return adress;
}
public void setAdress(String adress) {
this.adress = adress;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getFax() {
return fax;
}
public void setFax(String fax) {
this.fax = fax;
}
@Override
public String toString() {
return String.format("%s\t地址:%s\t联系电话%s\t传真:%s\t\n",
getName(),getAdress(),getPhone(),getFax());
}
}
工作伙伴类(Partner)
package address_book01;
public class Partner extends Contract{
private String title;
private Company company;
public Partner() {
}
public Partner(String name, String[] phones) {
super(name, phones);
}
public Partner(String name, String gender, String email, String[] phones, String title, Company company) {
super(name, gender, email, phones);
this.title = title;
this.company = company;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Company getCompany() {
return company;
}
public void setCompany(Company company) {
this.company = company;
}
@Override
public void dispaly() {
super.dispaly();
System.out.println("职务:" + getTitle() + "\t工作单位:" + getCompany());
}
}
测试
import address_book01.Company;
import address_book01.Family;
import address_book01.Partner;
public class Main {
public static void main(String[] args) {
String[] phone = {"110120"};
Family family = new Family("张三", phone);
family.dispaly();
System.out.println();
Company huawai = new Company("huawai","深圳", "123456789", "1241-3131");
Partner partner = new Partner("李四", "男","12314@qq.com",phone,"主管",huawai);
partner.dispaly();
}
}
运行结果
使用多态数组测试
import address_book01.Company;
import address_book01.Contract;
import address_book01.Family;
import address_book01.Partner;
import extends_exercise01.NotPad;
import extends_exercise01.Pc;
import extends_exercise01.Person;
import extends_exercise01.Student;
import java.util.Date;
public class Main {
public static void main(String[] args) {
//多态数组练习
String[] phones = {"123456789"};
Contract[] contracts = new Contract[5];
Date date = new Date();
date.setTime(2022-2-22);
contracts [0] = new Family("张三","男","2022@qq.com", phones,date,"北京");//向上转型
contracts[1] = new Family("李四",phones);
contracts[2] = new Partner("赵五",phones);
contracts[2] = new Partner("老王","男","2312@163.com",phones,"主管",new Company("huawei","深圳","12314564","12-144-24"));
//遍历联系人
for (int i = 0; i < contracts.length; i++) {
if (contracts[i] instanceof Family) {
//向下转型
Family family = (Family) contracts[i];
family.dispaly();
}else if (contracts[i] instanceof Partner) {
Partner partner = (Partner)contracts[i];
partner.dispaly();
}
}
}
}
运行结果