抽象类和接口

1    抽象类&抽象方法的定义

抽象方法定义的格式:

public abstract 返回值类型 方法名(参数);

抽象类定义的格式:

abstract class 类名 {

}

2     抽象类的特点:

1、抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。

2、抽象类不可以直接创建对象,原因:调用抽象方法没有意义。

3、只有覆盖了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽象类。

复制代码
public abstract class Developer {
    //抽象方法没有方法体
    public abstract void work();
}


public class JavaEE extends Developer{
    //抽象方法
    public void work(){
        System.out.println("JavaEE工程师写JavaEE代码");
    }
}

public class Test {
    public static void main(String[] args) {
        JavaEE java=new JavaEE();
        java.work();
    }
}
复制代码

3     抽象类的细节问题:

1、抽象类一定是个父类?

     是的,因为不断抽取而来的。

2、抽象类中是否可以不定义抽象方法。

是可以的,那这个抽象类的存在到底有什么意义呢?不让该类创建对象,方法可以直接让子类去使用

3、抽象关键字abstract不可以和哪些关键字共存?    

l  1、private:私有的方法子类是无法继承到的,也不存在覆盖,而abstract和private一起使用修饰方法,abstract既要子类去实现这个方法,而private修饰子类根本无法得到父类这个方法。互相矛盾。

l  2、final

l  3、static

4  接口概念

接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。

接口定义时需要使用interface关键字,类实现接口使用implements。

复制代码
public interface Myinterface {
    //接口中所有成员变量修饰符public static final
    //static 静态:只要被static修饰的成员,在外界可以直接通过类名.成员调用
    //final 最终的:被final修饰的变量叫常量,一次赋值终身不变
    public static final int a=0;
    //接口中所有方法的修饰符都是 public abstract
    public abstract void a();
}


//类实现接口
public class MyinterfaceImp implements Myinterface{
    public void a(){};
}
复制代码

在类实现接口后,该类就会将接口中的抽象方法继承过来,此时该类需要重写该抽象方法,完成具体的逻辑。

接口中可以定义变量,但是变量必须有固定的修饰符修饰,public static final 所以接口中的变量也称之为常量,其值不能改变。

接口不可以创建对象。

接口最重要的体现:解决单继承的弊端。将类的单继承这种机制在java中通过多实现完成了。

原文地址:https://www.cnblogs.com/lxzwhite/p/10694477.html