Java教程

Java面向对象(四)

本文主要是介绍Java面向对象(四),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java面向对象(四)

1.抽象类

概括:抽象类中可以有一些方法但又无须提供它的实现,通过子类实现抽象类中的抽象方法。

举例:

abstract class Animal3{
    public abstract void shout();
}

class Dog3 extends Animal3{
    public void shout(){
        System.out.println("汪汪");
    }
}

public class Page117 {
    public static void main(String[] args) {
        Dog3 dog=new Dog3();
        dog.shout();
    }
}

注意:

  • 一个类中包含抽象方法那么它一定是抽象类
  • 抽象类中可以不包含抽象方法
  • 抽象类不可以被实例化
  • 抽象方法没有方法体,不可以被调用,需要在子类中实现抽象方法

2.接口

概括:接口是特殊的抽象类,它不能包含普通方法,内部所有方法都是抽象方法。JDK8中对接口进行了重新定义,接口中除抽象方法外还可以有默认方法和静态方法(也叫类方法),分别用default和static修饰,且两种方法都允许有方法体。与定义类不同的是,定义接口不再使用class关键字,而是使用interface关键字。

语法:

[修饰符] interface 接口名 [extends 父接口1,父接口2,...]{
    [public] [static] [final] 常量类型 常量名=常量值;
    [public] [abstract] 方法返回值类型 方法名([参数列表]);
    [public] default 方法返回值类型 方法名([参数列表]){
        //默认方法方法体
    }
    [public] default 方法返回值类型 方法名([参数列表]){
        //静态方法方法体
    }
}

注意:

  • 定义常量时必须进行初始化赋值
  • 接口可以同时继承多个父接口
  • 定义常量时可省略public static final,接口会默认添加,同理定义抽象方法可以省略public abstract,定义默认方法和静态方法可省略public

静态方法可以通过接口名.方法名调用,而抽象方法和默认方法只能通过接口实现类的实例对象来调用,接口的实现类必须实现接口中的所有抽象方法,通过implements关键字来实现接口,一个类可以在继承另一个类的同时实现多个接口

语法:

[修饰符] class 类名 [extends 父类名] [implements 接口1,接口2,...]{
    
}

举例:

interface Animal4{
    int ID=1;   //全局常量
    void breathe(); //抽象方法
    default void getType(String type){
        System.out.println("该动物属于"+type);
    }
    static int getID(){
        return Animal4.ID;
    }
}

class Dog4 implements Animal4{
    public void breathe(){
        System.out.println("狗在呼吸");
    }
}

public class Page118 {
    public static void main(String[] args) {
        System.out.println(Animal4.getID());
        Dog4 dog=new Dog4();
        System.out.println(dog.ID);
        dog.breathe();
        dog.getType("犬类");
    }
}

注意:

  • 这种情况也是ok的,接口2继承(extend)接口1,类实现(implements)接口2
  • 一个类实现接口时,如果它是抽象类,那么只需要实现接口中部分抽象方法即可,否则要实现全部抽象方法
  • 一个类可以通过implements同时实现多个接口,
  • 一个接口可以通过extends同时继承多个接口
  • 一个类继承一个类的同时还可以实现接口,class A extends B implements C{} //先继承再实现
这篇关于Java面向对象(四)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!