Java暑期学习Day17
今天是第17天,暑期已经过了大半个月,希望接下来的时光不要荒废掉{:10_300:}static/image/hrline/1.gif
①重新定义行为(plus)
在JDK5之后支持标注,其中一个内建的标准标注就是@Override。如果在子类中某方法前标注@Override,表示要求编译程序检查,该方法是不是真的重新定义了子类中某个方法,如果不是的话,就会引发编译错误。
The method fight() of type SwordsMan must override or implement a supertype method
supertype 父型;
implementvt.实施,执行; 使生效,实现; 落实(政策); 把…填满;
n.工具,器械; 家具; 手段; [法]履行(契约等);
static/image/hrline/4.gif
②抽象方法、抽象类
A. 抽象类:Java中可以定义没有方法体的方法,该方法由其子类来具体的实现。该没有方法体的方法被称之为抽象方法,含有抽象方法的类被称之为抽象类。
(抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
抽象类中的抽象方法只是声明,不包含方法体。)
B. 如果某方法区块中真的没有任何程序代码操作,可以使用abstract标示该方法为抽象方法,该方法不用撰写{}区块,直接“;”结束即可。类中若有方法没有操作,并且标示为abstract,表示这个类不完整,定义不完整的类不能用来生成实例。Java中规定内含抽象方法的类,一定要在class前标示abstract,表示这是一个定义不完整的抽象类。
C.抽象方法特点
1.只有方法头没有方法体的方法称为抽象方法
2.抽象方法用abstract来修饰
3.抽象方法代表一种不确定的操作或行为
4.抽象方法不能被调用
D.易混淆的点
1.抽象类不能被实例化,只有抽象类的非抽象子类可以创建对象。
(——所以抽象类必须被继承,才能被使用。
p.ps:一个类只能继承一个抽象类,而一个类可以实现多个接口。)
2.抽象类中不一定含有抽象方法,但是有抽象方法的类必定是抽象类。
3.构造方法,类方法(用static修饰的方法)不能声明为抽象对象。
4.抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。
public class EmployeeDemo {
public static void main(String[] args) {
JavaTeacher teacher=new JavaTeacher(1,"大白",5555);
teacher.work();
Leader leader =new Leader(2,"小黑",6666,10000);
leader.work();
}
}
//抽象类
abstract class Employee{
private int number;
private String name;
private double salary;
public Employee(int number,String name,double salary){
this.number=number;
this.name=name;
this.salary=salary;
}
//抽象方法的声明
public abstract void work();
}
//一旦一个类去继承了抽象类,那么这个类要么实现抽象类中的抽象
//方法,要么被定义成抽象类
class JavaTeacher extends Employee{
public JavaTeacher(int number,String name,double salary){
super(number,name,salary);
}
public void work(){
System.out.println("上Java课");
}
}
class Leader extends Employee{
private double allowance;//津贴
public Leader (int number,String name,double salary,double allowance){
super(number,name,salary);
this.allowance=allowance;
}
public void work(){
System.out.println("培训新员工");
System.out.println("设计课程体系");
}
}
继承抽象方法的子类必须重写该方法。否则,该子类也必须声明为抽象类。最终,必须有子类来实现该抽象方法,否则,从最终的父类到最终的子类都不能用来实例化对象.
页:
[1]