创建一个接口 三个类 实现一个人基本信息的整合
本文转载自【微信公众号:五角钱的程序员,ID:xianglin965】,经微信公众号授权转载,如需转载与原文作者联系
图丨pixabay
创建一个接口,三个类,实现一个人基本信息的整合。(泛型的实际运用)
首先定义标识接口——信息
public interface Info {}
第一个类用来实现联系方式
public class Contact implements Info {private String address; private String telphone; private String zipcode; public Contact(String address,String telphone,String zipcode) { this.address = address; this.telphone = telphone; this.zipcode = zipcode; } public String getaddress() { return address; } public String gettelphone() { return telphone; } public String getzipcpde() { return zipcode; } public String toString() { return "联系方式:"+"n"+"t|- 联系电话:"+this.telphone+ "t|- 联系地址:"+this.address+ "t|- 邮政编码:"+this.zipcode; }}
ps:最后运用了toString的覆写方式,用于最后的输出
第二个类用来实现个人的基本信息
public class Intro implements Info {private String name; private String sex; private int age; public Intro(String name,String sex,int age) { this.name = name; this.sex = sex; this.age = age; } public String getname() { return name; } public String getsex() { return sex; } public int getage() { return age; } public String toString() { return "基本信息:"+"n"+"t|- 名字:"+this.name+ "t|- 性别:"+this.sex+ "t|- 年龄:"+this.age; }}
ps:其实这两个类是没什么大的区别的,只是参数换了而已。都是用构造方法为属性设置值,然后用get方法来取得值而已。笔者很菜,暂时先用这个。
最后一个定义一个Person类
info属性的类型使用泛型
public class Person
ps:可以很清楚的看到,这个类里面的属性和方法都使用泛型。为泛型设置上限,规定泛型只能是Info接口的子类,然后继续运用构造方法和get方法设置与取得最后的值。
需要注意的是,最后toString方法中,调用的是Info接口子类中的toString方法,覆写Object类中的toString方法。
最后是主函数
分别实例化两个对象,用来实现不同的功能
import java.util.Scanner;public class Main {public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); String a1 = in.next(); String a2 = in.next(); String a3 = in.next(); Person
输出:
13412345678重庆巴南402300------------------------------------------联系方式:|- 联系电话:重庆巴南 |- 联系地址:13412345678 |- 邮政编码:402300阿迅男18基本信息: |- 名字:阿迅 |- 性别:男 |- 年龄:18
ps:此时泛型的妙处就可以体现了,类型不相同的属性如果不用泛型转换会很恼火,但是此处只需要将泛型声明为Info的子类即可,整个属性也会随着子类的改变而改变。
特别需要注意:实例化Person对象时,还要实例化Info子类的对象,因为之前用于信息统计的两个类里面同样有方法的存在,所以要想使用方法,必须将该子类对象实例化。这个有时候会很难注意到。