带抽象方法的类必须是抽象类
//抽象类
public abstract class Animal{
//抽象方法
public abstract void eat();
}
抽象类不能实例化,只能让子类继承
子类必须覆盖父类所有的抽象方法
public class Cat extends Animal{
public void eat(){
System.out.println("cat eat fish");
}
}
抽象类可以无抽象方法
public abstract class KeyAdapter implements KeyListener {
/**
* Invoked when a key has been typed.
* This event occurs when a key press is followed by a key release.
*/
public void keyTyped(KeyEvent e) {}
/**
* Invoked when a key has been pressed.
*/
public void keyPressed(KeyEvent e) {}
/**
* Invoked when a key has been released.
*/
public void keyReleased(KeyEvent e) {}
}
特点:
1.抽象类不能new实例化
2.抽象类可以有构造方法,但是构造方法不能是抽象方法
3.通过子类继承,可以调用抽象类的构造方法
可以像接口那样,用匿名内部类实现实例化
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
System.out.println("fxcku!");
}
});
}