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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 呆呆呆 中级黑马   /  2013-12-17 18:33  /  1272 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. abstract class Name {
  2. private String name;
  3. public abstract boolean isStupidName(String name) {}
  4. }
复制代码

这段代码有什么错误呢?

评分

参与人数 1黑马币 +5 收起 理由
乔兵 + 5

查看全部评分

5 个回复

倒序浏览
abstract class Name {

     private String name;

     public abstract boolean isStupidName(String name) ;

}
这里涉及到了抽象类,抽象类只是抽取了功能定义,而不抽取功能主题,上述代码中的抽象方法应没有方法体。应写成上述代码!

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
abstract修饰的类是抽象类,abstract修饰的方法是抽象方法,抽象方法是不能有方法体的,也就是不能有大括号,抽象方法的大括号去掉,加上分号就可以了。
回复 使用道具 举报
  1. abstract class Name {
  2. private String name;
  3. public abstract boolean isStupidName(String name) {}
  4. }
复制代码

abstract修饰的方法是抽象方法,是没有方法体的。
所以public abstract boolean isStupidName(String name);
这样就可以

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
  1. abstract class Name {

  2.      private String name;

  3.      public abstract boolean isStupidName(String name) ;

  4. }
复制代码

你定义的是抽象类,抽象类里面的抽象方法是没有方法体的。需要子类去重写。

但是抽象类里面可以存在不抽象的方法。所以你有两种更改方式。

public abstract boolean isStupidName(String name) {};改成:


public abstract boolean isStupidName(String name) ;


或者


public boolean isStupidName(String name){} ;

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
简单的总结定义看下,不知道对你有帮助没

1.一个方法声明中如果加上abstract修饰符,我们称该方法为抽象方法(abstract method)。

如果一个方法被声明也是抽象的,那么该方法默认也是一个虚方法。事实上,抽象方法是一个新的虚方法,它不提供具体的方法实现代码。我们知道,非虚的派生类要求通过重载为继承的虚方法提供自己的实现,而抽象方法则不包含具体的实现内容,所以方法声明的执行体中只有一个分号“;”。

只能在抽象类中声明抽象方法。对抽象方法,不能再使用static或virtual修饰符,而且方法不能有任何可执行代码,哪怕只是一对大括号中间加一个分号“{;}”都不允许出现,只需要给出方法的原型就可以了。\
2.不能调用空对象的属性,会报null异常
3.同一题
4.如果一个域申明为final的时候有什么作用?一个属性声明为final之后,你不能在对它重新进行赋值,否则编译报错,The final field ×× cannot be assigned。另外,请注意,类声明为final的时候,仅仅它的方法自动变为final,而属性则不会。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马