抽象方法是只声明而未实现的方法,所有的抽象方法必须用abstract修饰,包含抽象方法的类必须也用abstract修饰。
有抽象方法的类一定是抽象类,抽象类不一定有抽象方法。
package chapter16;
import sun.applet.Main;
public abstract class Abs1 {
private int age;
private String name;
public Abs1(int age, String name) {
this.age = age;
this.name = name;
}
public static void main(String[] args) {
}
}
}
抽象类定义:
1.抽象类和抽象方法必须用abstract修饰
2.抽象类不能直接被实例化,也不能用new产生新对象。
3.抽象方法只需要声明,而不需要实现。
4.含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆盖所有的抽象方法后才能被实例化,否则这个类还是抽象类。
package chapter16;
import sun.applet.Main;
public abstract class Abs1 {
private int age;
private String name;
public abstract void say();
public abstract void talk();
public static void main(String[] args) {
Son son=new Son();
son.say();
}
}
//这样编译器会报错:要么声明Son为抽象类,要么实现talk()方法
class Son extends Abs1{
public Son() {
}
public void say(){
System.out.println("hello");
}
}
抽象类声明构造方法后,在子类必须被明确调用。
package chapter16;
import sun.applet.Main;
public abstract class Abs1 {
private int age;
private String name;
public Abs1(int age, String name) {
this.age = age;
this.name = name;
}
public static void main(String[] args) {
}
}
class son extends Abs1{
public son(int age, String name) {
super(age, name);
}
}
抽象类实例:
package chapter16;
import sun.applet.Main;
public abstract class Abs1 {
private int age;
private String name;
public abstract void say();
public static void main(String[] args) {
Son son=new Son();
son.say();
}
}
class Son extends Abs1{
public Son() {
}
public void say(){
System.out.println("hello");
}
}
输出结果:
hello