A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯鹏飞 黑马帝   /  2011-7-20 17:38  /  3471 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在抽象类中定义方法时有必要写参数吗?抽象类中的方法不就起到声明的作用那为何还要指定参数?这不是违背了面象对象的思想了吗? 

6 个回复

倒序浏览
黑马网友  发表于 2011-7-20 17:49:17
沙发

回复 楼主 的帖子

反推一下,我有一个带参数的方法,有多种实现,或者是一个通用方法,现在要把它放放到抽象类或者接口中声明,如果不含参数,实现类怎么传递参数呢?
抽象,只是方法功能的抽象,与方法的具体实现方式无关。所以不管是抽象类还是接口带参数并无不妥。只是这个参数常常是一个接口,面向接口编程。
至于你说违背了面象对象的思想,我不知道至于面向对象有什么关系。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 我很赞同

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-20 18:00:48
藤椅
父类引用子类,调用带参数的方法时会用上啊
回复 使用道具 举报
黑马网友  发表于 2011-7-20 21:14:21
板凳

回复 沙发 的帖子

如果一个类中有各种不同类型的两个数相加的方法,需要指定参数类型,在继承该抽象类时岂不需要覆盖所有方法?
回复 使用道具 举报
黑马网友  发表于 2011-7-20 22:01:20
报纸
亲手做实验。
例如一个接口:[code]public interface InterfaceTest {
public void test(String s);
}[/code]在这里参数声明String 是必须的而且是子类要遵守的约定,但是至于s则是一种约定形式,子类参数的名字可以改变:[code]public class InterfaceRelize implements InterfaceTest {

        public void test(String t) {
                // TODO Auto-generated method stub
                System.out.println(t);
        }
        public static void main(String args[]) {
                new InterfaceRelize().test("zxx");
        }
}[/code]在实现类中,我将实现方法test中的参数名字s改变为t,此时没有影响,程序运行正常。
总结:抽象类方法参数的声明是必须的而且是至关重要的,但是至于方法参数的名字则是一种约定,实现类中可以改变其中的名字。至于楼主说违背了面向对象的思想,就不知是如何违背的啦?

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 我很赞同

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-20 23:08:10
地板
有必要,在abstract class的定义中,我们可以赋予方法的默认行为。抽象类是对本质上相同的具体概念的抽象;abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系,而继承这个抽象类的具体类就将各种方法具体化。这也体现了面向对象的继承这一特性,在abstract class方式中也可以有非 abstract的成员方法。
回复 使用道具 举报
黑马网友  发表于 2011-7-21 07:34:02
7#

回复 报纸 的帖子

恩,明白了,谢谢大家的指点,这个问题曾困惑我好久,现在才发现论坛真是个好工具,以后要多逛论坛学习…
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马