`

没有实现抽象方法的具体类居然编译通过了

阅读更多

来自csdn:

http://topic.csdn.net/u/20110131/09/7099a295-3877-4b2d-81bd-46137e5530c9.html

 

package pack1;

public abstract class A {
	abstract void set();
}

 

package pack2;

import pack1.A;

public abstract class B extends A {
	protected void set() {
	}
}

 

package pack1;

import pack2.B;

public class C extends B {
	public static void main(String[] args) {
		A the = new C();
		the.set();
	}
}

 

let's have a try, if you compile it, you'll find no error occurs at compile time, why? as B does not override A, but the compilation passed, according to the java doc:

 

public class AbstractMethodError

extends IncompatibleClassChangeError

Thrown when an application tries to call an abstract method. Normally, this error is caught by the compiler; this error can only occur at run time if the definition of some class has incompatibly changed since the currently executing method was last compiled.

 

no changes have been made, it still passes, is it the bug of the javac? let's check it out.

分享到:
评论

相关推荐

    编译原理实验上机指导

    编译原理是一门理论性和实践性较强的课程,在学习过程中,实验非常重要,只有通过上机实验,才能使学生对比较抽象的课程内容产生一个具体的感性认识。但是,目前国内市场上很少有较详细且比较适合我校实际的实验指导...

    《编译原理》上级实验指导

    编译原理是一门理论性和实践性较强的课程,在学习过程中,实验非常重要,只有通过上机实验,才能使学生对比较抽象的课程内容产生一个具体的感性认识。但是,目前国内市场上很少有较详细且比较适合我校实际的实验指导...

    编译原理实验指导书和代码.rar

    编译原理是计算机专业的重要专业课之一,主要介绍程序设计语言编译构造的基本原理和基本实现方法。由于这门课程相对抽象且内容复杂,是较难学的一门课程。编译原理是一门理论性和实践性较强的课程,《编译原理》实验...

    【05-面向对象(下)】

    •抽象方法和类都必须使用abstract来修饰,有抽象方法的类只能定义成抽象类,抽象里也可以没有抽象方法。 • 抽象类不能被实例化,可以通过其子类给他赋值,普通类里有的抽象里也有,定义抽象方法只需在普通方法...

    在java中如何定义一个抽象属性示例详解

    由于Java不支持抽象属性,如果你试图将类属性标记为抽象,将会得到一个编译时错误。 在本教程中,我们将介绍两种定义抽象属性的方法,这些抽象属性可以由子类进行设置,而且不使用Abstract 关键字。 实用案例 假设...

    编译原理词法分析器语法分析器实验报告

    为了使学生更好地理解和掌握编译技术的基本概念、基本原理和实现方法,实践环节非常重要,只有通过上机进行程序设计,才能使学生对比较抽象的教学内容产生具体的感性认识,增强学生综合分析问题、解决问题的能力,并...

    Java面试问题带答案40道.docx

    答:接口是一种与具体实现无关的规范,其中只包含了方法的声明而没有实现。它可以被实现多次,并且一个类可以实现多个接口。 5. try-catch-finally块中有哪些必须要有的部分? 答:try和catch块是必须要有的部分,...

    动态链接库_导出类

    本人经过两天的研究,终于...这种方法是我推荐的,它是由动态加载进来的,其中实现原理是:运用抽象类,为工程创建接口,通过接口来导出类成员函数 这种方式通用性强,而且代码比较的健壮,节省内存。见工程useDLL。

    计算机(专升本)Java程序设计复习资料.doc

    接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法, 而接口中不能定义构造器而且其中的方法全部都是抽象方法。 抽象类中的成员可以是private、默认、protected、public的,而接口中的...

    Java程序设计习题(含答案解析).doc

    一个线程对象的具体操作是由run()方法的容确定的,但是Thread类的run()方法是 空的,其中没有容;所以用户程序要么派生一个Thread的子类并在子类里重新定义run()方 法,要么使一个类实现Runnable接口并书写其中run()...

    java经典面试2010集锦100题(不看你后悔)

    B) 抽象类中的方法如果可以有实现体,如果没有实现体,则该方法叫做抽象方法必须加关键字abstract修饰该方法。 C) 抽象类中至少需要有一个方法被定义为抽象方法,在该方法前加abstract,把该方法定义为抽象方法。 D)...

    同济大学计算机系课程《编译原理》大作业项目词法分析器LR1语法分析器.zip

    同济大学计算机系课程《编译原理》大作业项目词法...这些资源提供了关于如何实现词法分析器和LR1语法分析器的具体指导,包括源代码示例、设计文档和实验报告。这些资料对于理解和实现编译原理课程的大作业非常有帮助。

    java 编程基础题

    GradeDemo类中的checkAnswer方法实现不定项选择判分,具体要求如下: 1) 考生答案和正确答案相同(不考虑选项顺序),得5分。 2) 考生答案不全,得2分。 3) 考生答案中有错误答案,得0分。 部分示例如下: 正确...

    现代编译器的Java实现

    本书介绍了编译器的各个方面,包括词法分析,语法分析,抽象语法,语义行为,中间表示,通过树匹配选择指令,数据流分析,用色图法实现寄存器分配,运行时间系统。本书还讲述了通用的编译器实现技术,包括代码生成、...

    JAVA面试题最全集

    一、Java基础知识 1.Java有那些基本数据类型,String是不是基本...这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() ...

    java 面试题 总结

    声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其...

    net学习笔记及其他代码应用

    声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其...

    JAVA复习资料

    25、 抽象或abstract 方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。 最终后final 方法是不能被当前类的子类重新定义的方法。 26、多态是指 一种定义,多种实现 ,在Java中有...

    面向对象设计原则-依赖倒置原则示例源码

    修改为高层A依赖于抽象层C,抽象层C是属于A层的,即由A层来规定抽象层C的接口规范,低层B也依赖于抽象层C来具体实现C中的接口,因此通过引入C层,来达到了“倒置”。通过该倒置,引入C层来规范,A和B 可以同时 来...

    超级有影响力霸气的Java面试题大全文档

     声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,...

Global site tag (gtag.js) - Google Analytics