为什么要在定义抽象类时使用abstract关键字2011-02-06银河使者众所周之,在任何面向对象的语言中(包括Java、C#),在定义抽象类时必须使用abstract关键字。虽然这已经习已为常了,但实际上abstract是为了在实现接口或继承抽象类避免歧议而必须存在的。看如下代码:abstract class Class1 { abstract void method(); }上面的代码是一个典型的抽象类,在定义类时和定义方法时都使用了abstract。但从编译器的角度来说,在定义类时完全可以不使用abstract,如下面的代码所示:class Class1 { abstract void method(); }对于上面的代码,编译器在编译时并不会产生奇异,只要检测到类中有一个用abstract关键字的代码,就可以在编译的过程中自动向Class1添加abstract,也就是说,在定义Class1时添加abstract的工作应该由编译器来完成。虽然上面的过程看起来没什么问题,也并不难实现,但各位不要忘了,实现抽象类除了上面的方式,还有另外一种方式,这就是实现接口,而并不实现接口中的所有方法。看下面的代码:interface MyInterface { public void method1(); public void method2(); } abstract class MyClass implements MyInterface { public void method1() {
} }上面代码中MyClass类并未实现method2方法,也并示在定义方法时使用abstract关键字,然后,method2方法实际上就是abstract方法。大家可以想象,如果在定义抽象类时不使用abstract关键字会怎么样呢?看下面的代码:interface MyInterface { public void method1(); public void method2(); } class MyClass implements MyInterface { public void method1() {