Notas de estudio: clases e interfaces abstractas de Java

final

Al declarar clases, propiedades y métodos en Java, puede utilizar la palabra clave final para modificar, que significa "final".
La clase final marcada no se puede heredar. Mejore la seguridad y mejore la legibilidad del programa.
Los
métodos finales marcados de String, System y StringBuffer no pueden ser anulados por subclases.
GetClass () en la clase Object.
Las variables marcadas finales (variables miembro o variables locales) se denominan constantes. El nombre está en mayúscula y solo se puede asignar una vez.
Las variables miembro marcadas con final deben asignarse explícitamente al mismo tiempo de declaración o en cada constructor o bloque de código antes de que puedan usarse.

public final class Test{
    
    
    public static int totalNumber = 5 ;
    public final int ID;
    public Test(){
    
    
        ID = ++totalNumber;  //可在构造方法中给final变量赋值
    }
    public static void main(String[] args) {
    
    
        Test t = new Test();
        System.out.println(t.ID);
        final int I = 10;
        final int J;
        J = 20;
        J = 10;  //非法
    }}

Clase abstracta

Cuando la palabra clave abstracta se usa para modificar una clase, la clase se llama clase abstracta; cuando la palabra clave abstracta se
usa para modificar un método, el método se llama método abstracto.
Método abstracto: solo declaración de método, sin implementación de método. Termina con un punto y coma: abstract int abstractMethod (int a);
Las clases que contienen métodos abstractos deben declararse como clases abstractas.
No se pueden crear instancias de clases abstractas. Una clase abstracta se usa para ser heredada como clase principal. Las subclases de una clase abstracta deben anular el método abstracto de la clase principal y proporcionar un cuerpo de método. Si no se reescriben todos los métodos abstractos, sigue siendo una clase abstracta.
No puede usar abstracto para modificar atributos, métodos privados, constructores, métodos estáticos y métodos finales.

abstract class A{
    
    
    abstract void m1( );
    public void m2( ){
    
    
        System.out.println("A类中定义的m2方法");
    }
}

class B extends A{
    
    
    void m1( ){
    
    
        System.out.println("B类中定义的m1方法");
    }
}

public class Test{
    
    
    public static void main( String args[ ] ){
    
    
        A a = new B( );
        a.m1( );
        a.m2( );
    }
}

interfaz

A veces, debe derivar una subclase de varias clases y heredar todas sus propiedades y métodos. Sin embargo, Java no admite herencia múltiple. Con las interfaces, puede obtener el efecto de la herencia múltiple.
Una interfaz es una colección de métodos abstractos y definiciones de valores constantes.
Básicamente, una interfaz es una clase abstracta especial, que solo contiene la definición de constantes y métodos, pero no la implementación de variables y métodos.
Implementar clases de interfaz:
class SubClass implementa InterfaceA {}
Una clase puede implementar múltiples interfaces, y las interfaces también pueden heredar otras interfaces.

Las características de la
interfaz : use la interfaz para definir.
Todas las variables miembro en la interfaz están decoradas por public static final de forma predeterminada.
Todos los métodos de la interfaz están decorados con resumen público de forma predeterminada.
No hay ningún constructor para la interfaz.
La interfaz utiliza un mecanismo de herencia de múltiples capas.
Ejemplo de definición de interfaz

public interface Runner {
    
    
    int ID = 1;
    void start();
    public void run();
    void stop();
}

La clase que implementa la interfaz debe proporcionar el contenido de implementación específico de todos los métodos en la interfaz antes de poder crear una instancia. De lo contrario, sigue siendo una clase abstracta.
El objetivo principal de la interfaz es ser implementado por la clase de implementación. (Programación orientada a la interfaz)
Similar a la relación de herencia, hay polimorfismo entre la interfaz y la clase de implementación.
Defina el formato de sintaxis de una clase Java: escriba se extiende primero, luego implementa
<modificador> clase <nombre> [extiende <superclase>]
[implementa < interfaz> [, <interfaz>] *] { <declaraciones> * }

Método de interfaz para simular un interruptor de computadora

package com.java;

public interface USB {
    
    
    public void On();
    public void Off();
}
package com.java;

public class KeyBoard implements USB {
    
    
    @Override
    public void On() {
    
    
        System.out.println("启动键盘");
    }

    @Override
    public void Off() {
    
    
        System.out.println("关闭键盘");
    }
}
package com.java;

public class Mouse implements USB {
    
    
    @Override
    public void On() {
    
    
        System.out.println("鼠标启动");
    }

    @Override
    public void Off() {
    
    
        System.out.println("鼠标关闭");
    }
}
package com.java;

public class Computer {
    
    
    private USB[] usbArr=new USB[4];
    //添加usb设备
    public void add(USB usb) {
    
    
        for(int i=0;i<usbArr.length;i++)
        {
    
    
            if(usbArr[i]==null)
            {
    
    
                usbArr[i]=usb;
                break;
            }
        }
    }
    //电脑开机
    public void powerOn() {
    
    
        //1.开启usb设备接口
        for(int i=0;i<usbArr.length;i++)
        {
    
    
            if(usbArr[i]!=null) {
    
    
                usbArr[i].On();
            }
        }
        //2.电脑开机
        System.out.println("开机成功");
    }
    //电脑关机
    public void powerOff() {
    
    
        //1.关闭usb设备
        for(int i=0;i<usbArr.length;i++)
        {
    
    
            if(usbArr[i]!=null) {
    
    
                usbArr[i].Off();
            }
        }
        //2.电脑关机
        System.out.println("关机成功");
    }
}
package com.java;

public class Tast {
    
    
    public static void main(String[] args) {
    
    
            // TODO Auto-generated method stub
            //创建电脑对象
            Computer com=new Computer();
            //像电脑中添加usb设备
            com.add(new Mouse());
            com.add(new KeyBoard());
            //电脑开机
            com.powerOn();
            System.out.println();
            //电脑关机
            com.powerOff();
            System.out.println();
        }

    }

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_44909275/article/details/105271644
Recomendado
Clasificación