抽象方法: 用abstract来修饰的方法称为抽象方法
说明:
1 抽象方法只有声明,没有实现。
abstract return Type abstractMethod ([paramlist]);
2 抽象方法必须被重写。
3 抽象类中不一定包含抽象方法,但定义了抽象方法的类必须是抽象类。
示例:
将Animal 类定义为抽象类,将say()和run()方法定义为抽象方法。
说明
1 抽象方法不能有方法体。如果一个类中有抽象方法,则这个类必须为抽象类。
2 抽象类可以有抽象方法,也可以有普通的成员方法和成员变量。
3 通过抽象方法,可以定义一套完整的函数功能,再派生出若干子类来实现。不同的子类可以有不同的形式实现这些功能。
如图:
abstract class Animal{
String type;
String sex;
int age;
public Animal(String type,String sex,int age){
this.type=type;
this.sex=sex;
this.age=age;
}
public Animal(){}
public abstract void say();
public abstract void run();
public String toString(){
return "该动物为"+type+"类,今年"+age+"岁,"+sex;
}
}
抽象类:用abstract关键字来修饰的类称为抽象类。
说明:
1 抽象类中可以包含抽象方法,为所有的子类定义一个统一的接口。
2 抽象类不能被直接实例化为一个对象。
3 抽象类必须被继承,具体的抽象方法必须被重写。
4 抽象类的子类可以重写父类中全部的抽象方法,也可以部分重写父类中的抽象方法。
如果只是部分重写,则该子类还为抽象,还是要被继承。
示例:
定义一个父类Addition将其中的add()方法定义为抽象方法。
abstract class Addition {
public abstract void add();
}
在子类NumberAddition中重写父类的add()方法,将两个整数相加;
public class NumberAddition extends Addition {
int a;
int b;
public NumberAddition(int a,int b){
this.a=a;
this.b=b;
}
public void add(){
System.out.println("和为:"+(a+b));
}
}
在子类TextConcatenation中重写父类的add()方法,用来连接两个String字符串。
public class TextConcatenation extends Addition {
String a;
String b;
public TextConcatenation(String a,String b){
this.a=a;
this.b=b;
}
@Override
public void add() {
System.out.println("连接后的字符串:"+(a+b));
}
}
创建主类测试两个子类的add()方法。
public class Test {
public static void main(String[] args) {
TextConcatenation t=new TextConcatenation("he","llo");
t.add();
NumberAddition n=new NumberAddition(3,5);
n.add();
}
}



