马太效应 发表于 2017-7-21 23:49:58

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]
查看完整版本: Java暑期学习Day17