| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 484 人关注过本帖
标题:在继承中,创建对象的一个问题
只看楼主 加入收藏
mahayu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:160
注 册:2007-8-3
收藏
 问题点数:0 回复次数:2 
在继承中,创建对象的一个问题

class Square
{
int leght;
Square(int len)
{
leght=len;
}

void getPer()
{
System.out.println(":"+(4*leght));
}
}

class Rectang extends Square
{
int width;
Rectang(int len,int wid)
{
super(len);
width=wid;
}

void getPer()
{
System.out.println(":"+(2*(leght+width)));
}
}

public class Calculate
{
public static void main (String[] args)
{
Square sq=new Square(15);
sq.getPer();
Rectang re=new Rectang(8,19);
//Square re=new Rectang(8,19);
re.getPer();
}
}

看上面的红色代码部分,Rectang是继承自Square的子类,在创建Rectang对象实例时,以上两端红色代码的效果有啥不同?
我看过结果都一样,"Square re"与"Rectang re"有啥区别?在继承中象这种前面是父类名,后面是子类名创建对象的方法,能说明一下么?不太明白.

搜索更多相关主题的帖子: 继承 对象 
2007-10-01 10:00
zhufeifei
Rank: 1
等 级:新手上路
威 望:2
帖 子:402
专家分:0
注 册:2006-8-11
收藏
得分:0 

在这里是一样的,虚拟机采用的绑定规则是:
(1)实例方法与引用变量按实际引用的对象方法绑定,在这里即Rechtang类对象
(2)静态方法与引用变量按声明的类型方法来绑定,在这里即Rechtang父类Square
(3)成员变量与引用变量按所声明的类型的成员变量绑定

1是属于动态绑定,2,3属于静态绑定.
本题中属第一种,如果子类没有getPer()实例方法,即向上父类调用,调用父类的实例方法!


在不断的拼搏与进取中,定能创造一片天地!
2007-10-01 13:29
guoxhvip
Rank: 8Rank: 8
来 自:聖西羅南看臺
等 级:贵宾
威 望:44
帖 子:4052
专家分:135
注 册:2006-10-8
收藏
得分:0 
以下是引用zhufeifei在2007-10-1 13:29:39的发言:

在这里是一样的,虚拟机采用的绑定规则是:
(1)实例方法与引用变量按实际引用的对象方法绑定,在这里即Rechtang类对象
(2)静态方法与引用变量按声明的类型方法来绑定,在这里即Rechtang父类Square
(3)成员变量与引用变量按所声明的类型的成员变量绑定

1是属于动态绑定,2,3属于静态绑定.
本题中属第一种,如果子类没有getPer()实例方法,即向上父类调用,调用父类的实例方法!

我记得前段时间有几个这样的帖


愛生活 && 愛編程
2007-10-01 13:49
快速回复:在继承中,创建对象的一个问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019289 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved