什么是抽象类?
抽象类是不是有的方法是没有方法体的?
比如:
abstract void eat();
但是,今天去看了一下java的源码,发现WindowAdapter是抽象类,但是它的所有方法都是有空方法体的,这个也是抽象类吗?烦请高手解释一下。肯定是我的理解出现问题了
源码如下
public abstract class WindowAdapter
implements WindowListener, WindowStateListener, WindowFocusListener
{
public void windowOpened(WindowEvent e) {}
public void windowClosing(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}
public void windowStateChanged(WindowEvent e) {}
public void windowGainedFocus(WindowEvent e) {}
public void windowLostFocus(WindowEvent e) {}
}
------最佳解决方案--------------------抽象类是可以有私有方法或私有变量的。。。。
public的 当然也可以有。。。。
这个最好 对比一下接口的概念。。
http://blog.csdn.net/duanml61/article/details/8133258
我写的应该还算易理解吧。。。
------其他解决方案--------------------大家一起努力加油
------其他解决方案--------------------没有抽象方法的类,也可以定义成抽象类. 其目的就是不允许(或不需要)生成这个类的实例(不能new 出对象)。
比如一个类只有静态方法和静态属性,(这些都部需要实例来访问,)定义成抽象的也可以。
public abstract class TestHelloWorld//定义成抽象类也能运行。
{
public static void main(String[] args)
{
System.out.println("Hello world");
}
}
------其他解决方案--------------------抽象类中的方法可以加abstract,也可以不加abstract,如果想要继承抽象类的话,必须要在子类中覆写抽象类中的全部抽象方法才行。
抽象类里面的方法只需声明,无需写方法体,方法体在子类中覆写时写入方法体就行了。
个人理解,如有错误,请纠正,谢谢。
------其他解决方案--------------------
这个说得不错++
------其他解决方案--------------------
++
------其他解决方案--------------------抽象类的特点:
1.抽象方法一定在抽象类中。
2.抽象方法和抽象类都必须被abstract关键字修饰。
3.抽象类不可以用new创建对象,因为调用抽象方法没意义。
4.抽象类中的方法要被使用,必须由子类复写其所有的抽象方法后
建立子类对象调用,如果子类只覆盖了部分抽象方法,那么该子类还
是一个抽象类。
抽象类和一般类没有太大的不同。
该如何描述事物,就如何描述事物,只不过,该事物中,出现了一些看不懂