趣文网 > 作文大全

创建一个接口 三个类 实现一个人基本信息的整合

2020-12-31 04:45:01
相关推荐

本文转载自【微信公众号:五角钱的程序员,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 {private T info; public Person(T info) { this.info = info; } public T getinfo() { return info; } public String toString() { return this.info.toString(); }}

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 a = new Person(new Contact(a1,a2,a3)); System.out.println("——————————————————————————————————————————————"); System.out.println(a); String b1 = in.next(); String b2 = in.next(); int b3 = in.nextInt(); Person b = new Person(new Intro(b1,b2,b3)); System.out.println(b); }}

输出:

13412345678重庆巴南402300------------------------------------------联系方式:|- 联系电话:重庆巴南 |- 联系地址:13412345678 |- 邮政编码:402300阿迅男18基本信息: |- 名字:阿迅 |- 性别:男 |- 年龄:18

ps:此时泛型的妙处就可以体现了,类型不相同的属性如果不用泛型转换会很恼火,但是此处只需要将泛型声明为Info的子类即可,整个属性也会随着子类的改变而改变。

特别需要注意:实例化Person对象时,还要实例化Info子类的对象,因为之前用于信息统计的两个类里面同样有方法的存在,所以要想使用方法,必须将该子类对象实例化。这个有时候会很难注意到。

阅读剩余内容
网友评论
相关内容
延伸阅读
小编推荐

大家都在看

我想成为一名医生英语作文 五年级下册作文童年趣事 二十年后的家乡作文450字 我想握住你的手800字作文 我好想长大作文500字 我的读书故事作文450字 欢乐的春节作文500字 2005年山东高考作文 记事的作文500字以上 植物作文怎么写300字三年级 我最喜欢的体育运动英语作文 吉林省今年高考作文 童年趣事作文300字左右 热心肠的人作文300字 我和书的故事作文450字 快乐端午节作文450字 2017年河南高考作文 生命诚可贵作文600字 感恩母亲的作文1000字 人生不留遗憾作文素材 读万卷书不如行万里路作文 难忘的一瞬间作文600字 高考作文类型有哪几种 六一儿童节去玩的作文 我说我的青春故事作文 安徽语文高考作文题 只要有梦想作文600字 以读书为话题写一篇作文 从来没有这样勇敢作文 我有一个想法作文200字