什么是抽象类?
方法功能声明相同,但方法功能主体不同。那么这时也可以抽取,但只抽取方法声明,不抽取方法主体。那么此方法就是一个抽象方法。
抽象类的特点?
1、抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。
2、抽象类不可以直接创建对象,原因:调用抽象方法没有意义。
3、只有覆盖了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽象类。
之所以继承抽象类,更多的是在思想,是面对共性类型操作会更简单。
抽象类方法的定义?
当定义了抽象函数的类也必须被abstract关键字修饰,被abstract关键字修饰的类是抽象类。
抽象类定义格式: abstract class 类名
抽象方法格式: public abstract 返回值类型 方法名(参数)
1 package com.oracle.demo02; 2 3 public abstract class Emp { //定义Emp是个抽象类员工类 4 public abstract void work(); //员工都有工作,但是具体干什么不好说明白,定义工作为抽象方法让子类去定义具体做什么 5 }
1 package com.oracle.demo02; 2 3 public class yanfabu extends Emp { //创建了一个研发部当做员工类的子类,但是研发部里也有好多人具体干什么说不清,就不给描述,空方法再细分 4 public void work(){ 5 } 6 }
1 package com.oracle.demo02; 2 3 public class anzhuo extends yanfabu { //安卓继承了研发部类,具体描述工作做什么。 4 private int id; 5 private String name; 6 public void setId(int id){ 7 this.id = id; 8 } 9 public int getId(){ 10 return id; 11 } 12 public void setName(String name){ 13 this.name = name; 14 } 15 public String getName(){ 16 return name; 17 } 18 public void work(){ 19 System.out.print("编号"+id); 20 System.out.print(" 姓名"+name); 21 System.out.println(" 做安卓淘宝手机客户端"); 22 } 23 }
抽象类的小细节
1、抽象类一定是个父类?
是的,因为不断抽取而来的。
2、抽象类中是否可以不定义抽象方法。
是可以的,那这个抽象类的存在到底有什么意义呢?不让该类创建对象,方法可以直接让子类去使用