国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison 類庫下載 java類庫 java抽象類和接口

java抽象類和接口

Oct 31, 2016 pm 02:11 PM
java interface

?一、抽象類

????我們知道,對象是通過類來產(chǎn)生的,但是并非所有的類都可以描述具體的對象。

????如果一個類中不包含足夠的信息來描述具體的對象,就成為了抽象類。抽象類是對一類有著相同特征,但細(xì)節(jié)上卻有著不同表現(xiàn)的對象的抽象。比如,鳥類都會叫,但是不同的鳥叫法肯定是不同的,可以抽象出“叫”這個概念。

????定義下面一個鳥類:

public abstract class Bird {
    private String color;
 
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
    public Bird(){
    }
    public abstract void sing();//鳴叫
}
//喜鵲
class  Magpie extends Bird{
public void sing() {
System.out.println("I can sing in a whisper. ");
}
}

抽象類特征:

(1)抽象類用abstract關(guān)鍵字修飾

(2)抽象類中的抽象方法用abstract關(guān)鍵字修飾,沒有方法體(具體實(shí)現(xiàn))。

(3)抽象類可以包含非抽象方法

(4)抽象類可以不包含抽象方法(設(shè)計成抽象類就沒什么意義了吧。。。),但包含抽象方法的類一定是抽象類

(5)抽象類本質(zhì)也是類,只能單繼承

(6)抽象類不能實(shí)例化,不能new。我們前面說過它不描述具體的對象,肯定也不能實(shí)例化了

(7)抽象類可以有實(shí)例變量和構(gòu)造方法

二、接口

接口是一組方法特征的集合,是契約,規(guī)定了你可以做什么。軟件設(shè)計過程中要依賴抽象,而非具體實(shí)現(xiàn)。

像我們電腦上的usb接口,無論你是硬盤、u盤、還是手機(jī),只要你實(shí)現(xiàn)了usb規(guī)定的接口,便能夠聯(lián)通電腦。

上面抽象類的例子中,我想加入一個“飛”的功能,考慮到并非所有的鳥都會飛,比如:企鵝,鴕鳥,鴨子等等,該怎么辦呢?

修改抽象類肯定是不合適的:1、違反開閉原則,2:會使得所有的子類都繼承到“飛”這一功能,我們會看到滿天的鴨子在飛了^_^。

我們可以定義下面一個接口:

public interface IFly {
void fly();
 }

//喜鵲可以實(shí)現(xiàn)IBird中的接口:

class  Magpie extends Bird implements IFly {
public void sing() {
System.out.println("I can sing in a whisper. ");
}
        public void fly(){
            System.out.println("我會飛了!");
        }
}

????喜鵲實(shí)現(xiàn)了IFly中的fly接口,終于可以飛起來了。

????那如果需要給鳥類增加一個游泳的功能呢?自己去想。。。

接口的特征:

????(1)修飾符:public,abstract,default(不寫)

????(2)關(guān)鍵字:interface

????(3)接口中的方法都是抽象方法,不可以有實(shí)現(xiàn)。

????(4)接口中的方法默認(rèn)都是public abstract的,實(shí)現(xiàn)類中必須使用public修飾。

????(5)接口中的所有方法都必須在實(shí)現(xiàn)類(抽象類除外)中實(shí)現(xiàn)。

????(6)接口中的變量默認(rèn)為public static final的。

????(7)一個類可以實(shí)現(xiàn)多個接口。

?

????三、應(yīng)用場景

????1)抽象類體現(xiàn)的是“is a”的關(guān)系,如果某一些類的實(shí)現(xiàn)有共通之處,則可以抽象出來一個抽象類,讓抽象類實(shí)現(xiàn)共通的代碼,而個性化的方法則由各個子類去實(shí)現(xiàn)。?

????2)接口體現(xiàn)的是“l(fā)ike a”的關(guān)系,表現(xiàn)的是不同類對象在行為上的抽象。比如飛機(jī)和鳥都會飛,可以抽離出飛的接口,但他們非同類。

????3)在軟件設(shè)計中,當(dāng)你需要接口與實(shí)現(xiàn)分離,封裝變化的時候,面向接口編程顯得尤為重要。

????比如Ioc思想,客戶端不關(guān)心你具體是什么類,具體對象由容器來注入。

????再比如兩個系統(tǒng)交互,良好的設(shè)計是雙方提供接口,不關(guān)心內(nèi)部實(shí)現(xiàn),減少耦合性的同時,封裝了變化。

????很多設(shè)計原則、設(shè)計思想以及設(shè)計模式都體現(xiàn)出面向接口編程的重要性:開閉原則,接口隔離,依賴倒置,適配器模式等等。


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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276
Comment gérer les transactions en Java avec JDBC? Comment gérer les transactions en Java avec JDBC? Aug 02, 2025 pm 12:29 PM

Pour gérer correctement les transactions JDBC, vous devez d'abord désactiver le mode de validation automatique, puis effectuer plusieurs opérations, et enfin vous engager ou randonner en fonction des résultats; 1. Appelez Conn.SetAutoCommit (false) pour démarrer la transaction; 2. Exécuter plusieurs opérations SQL, telles que l'insertion et la mise à jour; 3. Appelez Conn.Commit () Si toutes les opérations sont réussies, et appelez Conn.Rollback () Si une exception se produit pour garantir la cohérence des données; Dans le même temps, les ressources TRY-With doivent être utilisées pour gérer les ressources, gérer correctement les exceptions et cl?turer les connexions pour éviter la fuite de connexion; De plus, il est recommandé d'utiliser des pools de connexion et de définir des points de sauvegarde pour réaliser un retour en arrière partiel, et de maintenir les transactions aussi courtes que possible pour améliorer les performances.

Comment travailler avec le calendrier à Java? Comment travailler avec le calendrier à Java? Aug 02, 2025 am 02:38 AM

Utilisez des classes dans le package Java.Time pour remplacer les anciennes classes de date et de calendrier; 2. Obtenez la date et l'heure actuelles via LocalDate, LocalDateTime et Localtime; 3. Créez une date et une heure spécifiques en utilisant la méthode OF (); 4. Utilisez la méthode plus / moins pour augmenter et diminuer le temps; 5. Utilisez ZonedDateTime et ZoneID pour traiter le fuseau horaire; 6. Format et cha?nes de date d'analyse via DateTimeFormatter; 7. Utilisez instantanément pour être compatible avec les anciens types de dates si nécessaire; Le traitement des dattes dans le Java moderne devrait donner la priorité à l'utilisation de Java.timeapi, qui fournit clairement, immuable et linéaire

Comparaison des frameworks Java: Spring Boot vs Quarkus vs MicronAut Comparaison des frameworks Java: Spring Boot vs Quarkus vs MicronAut Aug 04, 2025 pm 12:48 PM

Pré-formancetartuptimemoryusage, quarkusandmicronautleadduetocompile-timeprocessingandgraalvsupport, withquarkusofperforming lightbetterine scénarios.

Comprendre les ports du réseau et les pare-feu Comprendre les ports du réseau et les pare-feu Aug 01, 2025 am 06:40 AM

NetworkportsandfirewallsworkTogeTherToenable Communication whileSenSurringSecurity.1.networkportsAreVirtualEndpointsNumberred0–65535, Withwell-connuportslike80 (HTTP), 443 (HTTPS), 22 (SSH), et 25 (SMTP)

Comment fonctionne la collection Garbage en Java? Comment fonctionne la collection Garbage en Java? Aug 02, 2025 pm 01:55 PM

La collecte des ordures de Java (GC) est un mécanisme qui gère automatiquement la mémoire, ce qui réduit le risque de fuite de mémoire en récupérant des objets inaccessibles. 1. GC juge l'accessibilité de l'objet de l'objet racine (tel que les variables de pile, les threads actifs, les champs statiques, etc.), et les objets inaccessibles sont marqués comme des ordures. 2. Sur la base de l'algorithme de compensation de marque, marquez tous les objets accessibles et effacez des objets non marqués. 3. Adopter une stratégie de collecte générationnelle: la nouvelle génération (Eden, S0, S1) exécute fréquemment MinorGC; Les personnes agées fonctionnent moins, mais prend plus de temps pour effectuer MajorGC; Metaspace Stores Metadata de classe. 4. JVM fournit une variété de périphériques GC: SerialGC convient aux petites applications; Le parallelGC améliore le débit; CMS réduit

Utilisation de types HTML ?Entrée? pour les données utilisateur Utilisation de types HTML ?Entrée? pour les données utilisateur Aug 03, 2025 am 11:07 AM

Le choix du bon type HTMLinput peut améliorer la précision des données, améliorer l'expérience utilisateur et améliorer la convivialité. 1. Sélectionnez les types d'entrée correspondants en fonction du type de données, tels que le texte, le courrier électronique, le tel, le numéro et la date, qui peuvent vérifier automatiquement la somme de la somme et l'adaptation au clavier; 2. Utilisez HTML5 pour ajouter de nouveaux types tels que l'URL, la couleur, la plage et la recherche, qui peuvent fournir une méthode d'interaction plus intuitive; 3. Utilisez l'espace réservé et les attributs requis pour améliorer l'efficacité et la précision du remplissage des formulaires, mais il convient de noter que l'espace réservé ne peut pas remplacer l'étiquette.

Comparaison des outils de construction Java: Maven vs Gradle Comparaison des outils de construction Java: Maven vs Gradle Aug 03, 2025 pm 01:36 PM

GradleisthebetterChoiceFormostNewProjectsDuetOtsSuperiorflexibility, Performance et ModerNtoolingSupport.1.gradle’sgroovy / kotlindslismoreConcis

passer par l'exemple de déclaration de différence expliquée passer par l'exemple de déclaration de différence expliquée Aug 02, 2025 am 06:26 AM

Le report est utilisé pour effectuer des opérations spécifiées avant le retour de la fonction, telles que les ressources de nettoyage; Les paramètres sont évalués immédiatement lorsqu'ils sont reportés et les fonctions sont exécutées dans l'ordre de la dernière entrée (LIFO); 1. Plusieurs éleveurs sont exécutés dans l'ordre inverse des déclarations; 2. Communément utilisé pour le nettoyage sécurisé tel que la fermeture des fichiers; 3. La valeur de retour nommée peut être modifiée; 4. Il sera exécuté même si la panique se produit, adaptée à la récupération; 5. éviter l'abus de report dans les boucles pour éviter la fuite des ressources; Une utilisation correcte peut améliorer la sécurité et la lisibilité du code.

See all articles