黑马程序员技术交流社区

标题: abstract关键字和哪些关键字冲突啊 [打印本页]

作者: 张综    时间: 2012-11-11 21:10
标题: abstract关键字和哪些关键字冲突啊
abstract关键字除了和final    private,冲突还有哪些关键字和她冲突。

作者: 王振    时间: 2012-11-11 21:19
还与static关键字冲突。修饰符只能加public或者protected。
作者: 郭阳    时间: 2012-11-11 22:22
王振 发表于 2012-11-11 21:19
还与static关键字冲突。修饰符只能加public或者protected。

接口中的成员变量的属性默认是什么?没记错的话是public static final吧
作者: 王振    时间: 2012-11-11 22:29
郭阳 发表于 2012-11-11 22:22
接口中的成员变量的属性默认是什么?没记错的话是public static final吧

这里只是针对方法说的。楼主问的也是这个意思,因为用到abstract的要么是方法要么是类。
之所以abstract会与这些关键字冲突很大程度上都是要求重写方法与不能重写方法的冲突。
作者: 郭阳    时间: 2012-11-11 22:38
王振 发表于 2012-11-11 22:29
这里只是针对方法说的。楼主问的也是这个意思,因为用到abstract的要么是方法要么是类。
之所以abstract ...

嗯嗯看错了。。
作者: 王斌    时间: 2012-12-7 11:02
abstract 是抽象的意思,可以修饰类,方法 被它修饰的类是抽象类,可以有抽象方法,和非抽象方法,可以被继承,但是不能和 final  一起使用,因为,final 是最终的,不可被继承或是修改。
详细的说:
包含了抽象方法的一个类叫作“抽象类”。如果一个类里包含了一个或多个抽象方法,类就必须指定成
  abstract(抽象)。“抽象方法”,属于一种不完整的方法,只含有一个声明,没有方法主体。下面是抽象方法声明时采用的语法:
  abstract void X();
  如果从一个抽象类继承,而且想生成新类型的一个对象,就必须为基础类中的所有抽象方法提供方法定义。
  如果不这样做(完全可以选择不做),则衍生类也会是抽象的,而且编译器会强迫我们用abstract 关键字标
  志那个类的“抽象”本质。
  即使不包括任何abstract 方法,亦可将一个类声明成“抽象类”。如果一个类没必要拥有任何抽象方法,而
  且我们想禁止那个类的所有实例,这种能力就会显得非常有用。  

Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。
final类不能被继承,没有子类,final类中的方法默认是final的。
final方法不能被子类的方法覆盖,但可以被继承。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
final不能用于修饰构造方法。
注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。




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