Maison > Java > javaDidacticiel > En savoir plus sur la différence entre les interfaces Java et les classes abstraites

En savoir plus sur la différence entre les interfaces Java et les classes abstraites

黄舟
Libérer: 2017-03-15 13:20:46
original
1427 Les gens l'ont consulté

Après l'avoir lu sur papier, je me rends compte que je dois le faire en détail --Lu You Demandez au canal s'il est clair, afin qu'il y ait une source d'eau vive - Zhu Xi


Interface , interface, interface fait généralement référence aux méthodes et méthodes appelées par d'autres Fonction.

Forme de l'interface :

public interface interfaceName
{
        public static final   变量;
        void FunctionName(args);
}
Copier après la connexion

Caractéristiques de l'interface  :

1), L'interface peut contenir des variables et une méthode .

2), où les variables sont implicitement désignées comme variables finales statiques publiques et ne peuvent être que de telles variables.

3). Les méthodes d'interface sont implicitement désignées comme méthodes abstraites publiques et ne peuvent être que des méthodes abstraites publiques.

4) Les méthodes de l'interface ne peuvent pas avoir d'implémentations spécifiques. Ce sont toutes des méthodes abstraites. L'interface est un type extrêmement abstrait.

5). Une classe peut implémenter plusieurs interfaces et ne peut hériter d'une classe abstraite .

6), les méthodes d'interface doivent être implémentées dans les sous-classes.

Exemple simple :

//声明一个接口
interface Say {
    public void sayMessage();
}
//两个实现类
class SayHello implements Say {
    public void sayMessage() {
        System.out.println("hello");
    }
}
class SayHi implements Say {
    public void sayMessage() {
        System.out.println("Hi");
    }
}
public class TestSay {
    public static void main(String[] args) {
        //同样都是用Say这个接口类型实例,却可以输出两个结果
        Say say = new SayHello();
        say.sayMessage();
        Say say1 = new SayHi();
        say1.sayMessage();
    }
}
Copier après la connexion

Classe abstraite :

La définition générale d'une classe abstraite est une classe qui contient des méthodes abstraites. , utilisez simplement abstract pour Si une classe est modifiée, c'est toujours une classe abstraite sans méthodes abstraites, mais cela n'a pas beaucoup de sens.

Forme de la classe abstraite :

public abstract abstractName
{
    abstract void function();
    其他的正常类发方法与变量;
}
Copier après la connexion

Caractéristiques de la classe abstraite :

1), la classe abstraite ne contient pas seulement des méthodes abstraites , Il peut également avoir des variables et des méthodes ordinaires comme des classes ordinaires.

2) Les méthodes abstraites ne peuvent être que publiques ou protégées, car les classes abstraites sont censées être héritées et les méthodes privées n'ont aucun sens.

3) Les classes abstraites ne peuvent pas être utilisées pour créer des objets, elles sont utilisées pour être héritées.

4). Une sous-classe qui hérite d'une classe abstraite doit implémenter la méthode abstraite de la classe abstraite, sinon la sous-classe est aussi une classe abstraite.


抽象类示例:

public class Child extends Children{
    public Child(String name) {
        super(name);
    }

    public void printName() {
        System.out.println(super.getName());
    }


    public static void main(String[] args) {
        Child boy = new Child("Charley");
        System.out.println(boy.getName());
        Child girl = new Child("Queenie");
        girl.printName();
    }
}

abstract class Children {
    private String name;

    public Children(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    abstract void printName();
}
Copier après la connexion

抽象类和接口的区别

(1)抽象类可以有构造方法,接口内不能有构造方法

(2)抽象类中可以有普通成员变量,接口中的变量都是public static  final修饰的

(3)抽象类中可以包含非抽象的普通方法,接口中的方法默认是抽象方法

(4)抽象类中的抽象方法可以是public,protected、默认类型,接口中的抽象方法是public,默认是public abstract类型

(5)抽象类中可以有静态方法,接口中不包含静态方法

(6)抽象类和接口中都可以有静态成员变量,抽象类中的静态成员变量可以是任意访问类型的,接口中的静态成员变量只能是public static

(7)一个类可以实现多个接口,但只能继承一个抽象类

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal