黑马程序员技术交流社区

标题: 代码差错 [打印本页]

作者: 呆呆呆    时间: 2013-12-17 18:33
标题: 代码差错
  1. abstract class Name {
  2. private String name;
  3. public abstract boolean isStupidName(String name) {}
  4. }
复制代码

这段代码有什么错误呢?
作者: 冯国强    时间: 2013-12-17 18:43
abstract class Name {

     private String name;

     public abstract boolean isStupidName(String name) ;

}
这里涉及到了抽象类,抽象类只是抽取了功能定义,而不抽取功能主题,上述代码中的抽象方法应没有方法体。应写成上述代码!
作者: litaojisuanji    时间: 2013-12-17 18:46
abstract修饰的类是抽象类,abstract修饰的方法是抽象方法,抽象方法是不能有方法体的,也就是不能有大括号,抽象方法的大括号去掉,加上分号就可以了。
作者: 绕世界流浪丶    时间: 2013-12-17 18:52
  1. abstract class Name {
  2. private String name;
  3. public abstract boolean isStupidName(String name) {}
  4. }
复制代码

abstract修饰的方法是抽象方法,是没有方法体的。
所以public abstract boolean isStupidName(String name);
这样就可以
作者: 城市儒侠    时间: 2013-12-17 19:01
  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){} ;

作者: 丑男先生。    时间: 2013-12-17 19:14
简单的总结定义看下,不知道对你有帮助没

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

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

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2