Java的面向对象编程:继承与多态 - Angel's Blog.

ing
 
 
软件开发,程序设计,前端设计
 
 
首页 > code > Java的面向对象编程:继承与多态

Java的面向对象编程:继承与多态

 

1)继承的使用:

在Java中,使用关键字“extends”表示一个类继承另一个类。

比如:

public class childOne extends fartherOnly
{
}

下面来看一个demo:

demo:

 

public class Human {
	public Human(String name , int age)
	{
		setName(name);
		setAge(age);
	}
	private String name;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public void status()
	{
		System.out.println("会生存的人");
	}
	public void info()
	{
		System.out.println("Hi,我的名字是" + name +
				",年龄" + age + "岁");
	}

}
//写一个seller类,来继承Human
class seller extends Human
{
	public seller(String name , int age)
	{
		super(name, age);
	}
	//父类的方法重写
	public void status()
	{
		System.out.println("商家.");
		super.status();//通过super调用父类的status方法
	}
}
//再写一个geek类,也类继承Human
class geek extends Human
{
	public geek(String name , int age)
	{
		super(name, age);
	}
	//父类的方法重写
	public void status()
	{
		System.out.println("集客");
		super.status();//通过super调用父类的status方法
	}
}

在TestInfo类中写一个main方法测试:

 

public class TestInfo
{
	public static void main(String [] args)
	{
		//继承
		seller sl = new seller("好卖家", 28);
		sl.status();
		sl.info();
		System.out.println("===============================");
		geek gk = new geek("超级geek", 20);
		gk.status();
		gk.info();
	}
}

 

其中:

①:在父类中定义共有的属性与方法。

②:子类自动继承父类的属性与方法,同样地也可以自定义属性和方法(方法重写)。

③:子类调用父类的构造方法,通过关键字super。

④:子类重写父类的方法,通过super.访问调用父类的方法。

方法重写:

在子类中,如果定义的一个方法,方法名、返回类型、参数列表与父类相同,这个子类的方法重写了父类的方法。

使用继承的目的:

从demo中可以看出,继承的使用,避免重复代码的出现,相同的属性和方法都被提取到父类。父类相对通用,但是到了子类,属性和方法会更具体,子类和父类存在is-a的关系,譬如student is a person。

2)多态的使用:

下面我们根据demo中的具体例子,增加bonus类,在bonus类中定义totals()方法,totals方法用来输出“info(个人信息)和status(职业状态)”。

demo1:

 

//同demo的代码,省略。。
class bonus
{
	/*
	 * bonus类,使用totals调用传入方法中的对象的info和status..
	 */
	public void totals(Human hm)
	{
		hm.info();//调用info()方法
		hm.status();//调用status()方法
	}
}

在TestInfo中修改之前的main方法,用来测试:

 

public class TestInfo
{
	public static void main(String [] args)
	{
		bonus bn = new bonus();
		//在totals()已经调用了.info()和.status()方法
		bn.totals(new seller("超级黄冠卖家", 35));//传入了seller实例
		System.out.println("===============================");
		bn.totals(new geek("geek新手", 16));//传入了geek实例
	}
}

这里,根据totals方法传入不同实例,创建的实例不同的初始化值,调用其方法:

①:子类重写父类的方法。

②:将父类类型作为参数:父类或者子类的对象作为参数传入。

③:运行的时候,依据创建的对象来动态的调用方法。

 

或者通过RSS 关注本站的更新 ^ O ^ 。” —  by  转载请注明:来自 Angel's Blog.
本文永久链接: http://www.0ee.com/2010/12/17/java-extends-and-polymorphism.html
 
分类: code标签: , , ,
 
  • QQ书签
  • Del.icio.us
  • 百度收藏
  • Google
  • 饭否
  • FriendFeed
 

 
评论 (18) Trackbacks (0)
发表评论 Trackback
 
18 Comments Contributed by Visitors
  1.     花脸猴 2010年12月20日01:20 11#

    技术博客,强烈支持

  2.     SOHO一族 2010年12月20日04:58 12#

    赶明儿我也学点基本的吧,要不然还真看不懂这些代码。

  3.     学夫子 2010年12月20日05:29 13#

    是不是有点像集合里的包含关系?呵呵

  4.     Angel 2010年12月20日05:57 14#

    @小托
    呵呵,技术为王,但是也不能一辈子做技术,否则。。

  5.     Angel 2010年12月20日06:02 15#

    @花脸猴
    谢谢支持,这些知识都比较基本。 ok

  6.     Angel 2010年12月20日06:04 16#

    @SOHO一族
    嘿嘿,恩,这东西如果学得深了就会更加的爱它了。

  7.     Angel 2010年12月20日06:05 17#

    @youngsunblog
    嘿嘿,没学过当然不懂了,就如同没有走过路却不知道第一步该怎么走。

  8.     Angel 2010年12月20日06:08 18#

    @学夫子
    也可以这样说,继承和多态是面向对象编程的特征,共有的属性都拿到公有的类里面,然后子类继承父类的属性,方法,更直白些,他们的父类也可以看成模型,而子类就是更具体化了。

Leave Comments Here...

:) :-D :( :-o 8-O :-? 8) lol :-x :-P oops cry evil twisted wink ? idea :-| arrow mrgreen roll !

(required)

(required)

网址随您("http://"可以省略)

(Ctrl+Enter)

  • 本站不会泄露您的 Email 地址, 敬请放心.
  • 本站已开启缓存, 请不要重复提交评论.
  • 请注意: 带有 《广告(链)、不健康、或者 产品名字》 的评论一律视为spam.
  • 支持常用 HTML 标签调用, 插入 HTML 标签需注意: < == &lt;> == &gt;.
  • 仅当某人针对您的评论做出回应时, 您才会收到由本站发出的邮件通知.
  • 如您希望以相同方式通知某位网友, 请点击  按钮进行回复.
  • 允许在评论中使用如下代码: 
    <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> 
    <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> 
    .
  • 鼠标悬浮到评论中的 @someone 区域即可自动显示 someone 的评论内容.
 
 
  • 正在加载...