继承和多态
来源:互联网 发布:徒知徐州 河决曹村 编辑:程序博客网 时间:2024/04/28 18:23
菜鸟教你学JAVA之继承与多态
今天是教师节首先对全天下的教师说句:“您们辛苦了,教师节快乐!这里为您们送上一份礼物希望您能满意!”今天本菜鸟想讲一下与继承有关的多态性。当父类的某个方法被其子类重写时,可以各自产生自己的功能行为,同一个操作被不同类型对象调用时可能会产生不同的行为。
如 果一个类有很多子类,并且这些子类都重写了父类的某个方法,当我们把子类创建的对象的引用放到一个父类的对象中,就得到了该对象的一个上转型对象,那么这 个上转型对象在调用这个方法时就可能具有多种形态,因为不同的子类在重写父类的方法时可能产生不同的行为。例如如下这个例子,American的上转型对象调用“Speak”方法时产生的行为是“Happy Teacher's day”而Japanese的上转型对象调用“Speak”方法时产生的行为是“"教師の日、おめでとうございます”也就是说不同对象的上转型对象调用同一方法可能产生不同的行为。
例ExtendAndDuotai.java
//******************************************
abstract class People //定义了一个抽象类,不能用new创建对象,必须由子类创建对象。
{
public abstract void Speak(); //定义了一个抽象方法,只能声明,在子类中实现。
}
//***************************************
class American extends People //子类American继承了父类People
{
public void Speak() //实现父类中抽象方法
{
System.out.println("Happy Teacher's day");
}
}
//***************************************************
class Japanese extends People //子类Japanese继承了父类People
{
public void Speak() //实现父类中抽象方法
{
System.out.println("教師の日、おめでとうございます");
}
}
//******************************************************
class Chinese extends People //子类Chinese继承了父类People
{
public void Speak() //实现父类中抽象方法
{
System.out.println("教师节快乐!");
}
}
//*****************************************************
class ExtendAndDuotai //定义了一个主类,实现多态
{
public static void main(String args[])
{
People xiaochao; //父类声明了一个对象xiaochao
if(Math.random()<=0.33) // Math.random()产生0到1的随机数
{
xiaochao=new American(); // American类的上转型对象
xiaochao.Speak();
}
else if(Math.random()>0.33&&Math.random()<=0.66)
{
xiaochao=new Japanese(); // Japanese类的上转型对象
xiaochao.Speak();
}
else
{
xiaochao=new Chinese(); // Chinese类的上转型对象
xiaochao.Speak();
}
}
}
运行结果:
教師の日、おめでとうございます
D:/java_homework1/classes>java ExtendAndDuotai
教师节快乐!
D:/java_homework1/classes>java ExtendAndDuotai
Happy Teacher's day
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 解决hibernate 删除异常: deleted object would be re-saved by cascade (remove deleted object from associations)
- 卡巴网快均否认“Flashget包含病毒”
- Beijing改成Peking? 八成受访民众反对
- 无线频段竞拍空手而归 谷歌因祸得福
- ixp435 平台ecos , reboot烧写
- 继承和多态
- C#访问Access数据库的参考代码和连接语句的写法
- string:不要低估我的能力
- REALWorld 2008主题演讲
- windows下安装基于Apache的Subversion服务器
- 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast
- STATIC_CAST 和 REINTERPRET_CAST
- .NET 框架中的 Factory 模式
- ASP.NET 2.0中向数据库中上传图片