.
基本的类图关系:
编码实现:
package com.cdl.classDiagram;
public interface IPrePerson {
//以前的人只会吃喝睡觉
public void eat();
public void sleep();
}
package com.cdl.classDiagram;
/**
* 扩展接口PrePerson
*
* @author Administrator
*
*/
public interface IModernPerson extends IPrePerson {
// 现代人除了吃和睡,还要运动
public void doSports();
}
package com.cdl.classDiagram;
public abstract class AbstractCommonPerson implements IModernPerson {
// ----------实现了的公共部分放在抽象类中----------
// 大家都会有名字吧,所以这个是公共的
String firstName = null;
String lastName = null;
@Override
public void doSports() {
System.out.println("现代人生活好了后必须运动!");
}
@Override
public void eat() {
System.out.println("现代人和原始人一样必须吃!");
}
@Override
public void sleep() {
System.out.println("现代人和原始人一样必须睡觉!");
}
// ----------再次定义必须但没有实现的功能或者服务----------
// 显示自己的职业
public abstract void showBusiness();
}
package com.cdl.classDiagram;
public class Student extends AbstractCommonPerson {
public Student(String firstNamePara, String lastNamePara) {
this.firstName = firstNamePara;
this.lastName = lastNamePara;
}
@Override
public void showBusiness() {
System.out.println("我是" + this.firstName + "同学,你们可以叫我" + this.lastName
+ ",我的职业就是学习和创新!");
}
}
package com.cdl.classDiagram;
public class Teacher extends AbstractCommonPerson {
public Teacher(String firstNamePara, String lastNamePara) {
this.firstName = firstNamePara;
this.lastName = lastNamePara;
}
@Override
public void showBusiness() {
System.out.println("我是" + this.firstName + "老师,你们可以叫我" + this.lastName
+ ",我的职业就是教育学生!");
}
}
测试类:
package com.cdl.classDiagram;
public class ClassDiagramTest {
/**
* @param args
*/
public static void main(String[] args) {
// 测试学生类,指向学生
AbstractCommonPerson student = new Student("Cai", "Deliang");
testPerson(student);
// 测试老师类,指向老师
AbstractCommonPerson teacher = new Teacher("Zhang", "Yiping");
testPerson(teacher);
}
/**
* 调用抽象类中公共的服务
*
* @param person
* 传递进来的指向对象,可以是指向的老师也可以是指向的学生
*/
private static void testPerson(AbstractCommonPerson person) {
person.showBusiness();
person.eat();
person.sleep();
person.doSports();
System.out.println("------------分割线-------------");
}
}
输出结果:
我是Cai同学,你们可以叫我Deliang,我的职业就是学习和创新!
现代人和原始人一样必须吃!
现代人和原始人一样必须睡觉!
现代人生活好了后必须运动!
------------分割线-------------
我是Zhang老师,你们可以叫我Yiping,我的职业就是教育学生!
现代人和原始人一样必须吃!
现代人和原始人一样必须睡觉!
现代人生活好了后必须运动!
------------分割线-------------