您的位置:首页 > 职场人生

黑马程序员-继承和多态

2013-04-04 00:16 239 查看
------- android培训java培训、期待与您交流! ----------

封装、继承和多态是面向对象编程的三大特征,直接上实例:

abstract class Person		//抽象类:人类的模板
{
String name;		//名字
int age;		//年龄
abstract public void eat();	//吃的抽象函数
Person(String name,int age)	//构造函数
{
this.name=name;
this.age=age;
}
public static final void show(Person p)	//静态函数且不允许复写
{
System.out.println("名字:"+p.name+"年龄:"+p.age);
p.eat();
if(p instanceof  Student)
{
Student s=(Student)p;
s.study();
}
else if(p instanceof  Worker)
{
Worker w=(Worker)p;
w.work();
}
if(p instanceof  Smoke)
{
Smoke s=(Smoke)p;
s.smoke();
}
}

}

interface Smoke			//接口:抽烟
{
void smoke();
}

class Student extends Person		//不抽烟的学生类
{
Student(String name,int age)
{
super(name,age);
}
public void eat()
{
System.out.println("我在学生食堂吃");
}
public void study()
{
System.out.println("good study");
}
}

class CyStudent extends Student implements Smoke		//抽烟的学生类
{
CyStudent(String name,int age)
{
super(name,age);
}
public void smoke()
{
System.out.println("走,上厕所抽烟去");
}
}
class Worker extends Person				//不抽烟的工人
{
Worker(String name,int age)
{
super(name,age);
}
public void eat()
{
System.out.println("我在公司食堂吃");
}
public void work()
{
System.out.println("work hard");

}
}
class CyWorker extends Worker implements Smoke		//抽烟的工人
{
CyWorker(String name,int age)
{
super(name,age);
}
public void smoke()
{
System.out.println("饭后一根烟,快乐似神仙");
}
}

class Life		//生活类
{
public static void main(String[] args)
{
Student p1=new Student("zhansan",1);
CyStudent p2=new CyStudent("wangwu",2);
Worker p3=new Worker("lisi",3);
CyWorker p4=new CyWorker("zhaoliu",4);
Person.show(p1);
Person.show(p2);
Person.show(p3);
Person.show(p4);
}
}

在这个实例中,类的继承和实现关系入下:

Person类是最顶层的类

Smoke是一个接口

Student 类继承自Person类

Worker类继承自Person类

CyStudent类继承Student类并实现Smoke接口

CyWorker类继承自Worker类并实现了Smoke接口

在Life类中分别创建了Student、Worker、SyStudent、CyWorker类的一个实例,然后通过在Person类中定义的静态成员函数show(),来显示各个实例的具体信息。在show()中,通过判断对象的类型来调用不同对象成员函数。其运行结果如图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: