5.9 abstract类和方法
- 参考书籍:Java面向对象程序设计(第二版)--耿祥义 张跃平编著
抽象类A
package javalianxi;
abstract class A { //不允许使用final和abstract同时修饰一个方法
abstract int sum(int x,int y); //抽象方法
int sub(int x,int y){
return x-y; //非抽象方法(可有可无)
}
}
//注意:1.对于抽象方法 ,只允许声明,不允许实现
//2.abstract类不能使new运算符创建该类的对象
//3.abstract类也可以没有abstract方法
非抽象类B,继承抽象类A
package javalianxi;
class B extends A{
int sum(int x,int y){ //子类必须重写父类的sum方法
return x+y;
}//非抽象类是某个抽象类的子类,那么必须重写父类的抽象方法,给出方法体
}
//重写(Override):可以隐藏已继承的实例方法(方法重写也称为方法覆盖)
//规则:1:方法的类型一致 2:父类的方法的类型的子类型,方法名字,参数个数,参数类型和父类方法一致
//3:重写方法可以操作继承的成员变量,也可以操作子类新声明的成员变量 4:用super使用隐藏的方法
主类
package javalianxi;
public class Javalianxi {
public static void main(String args[]){
B b = new B();
int sum = b.sum(30,20); //调用重写的方法
int sub = b.sub(30,20); //调用继承的方法
System.out.println("sum="+sum);
System.out.println("sub="+sub);
}
}