Sobrecarregando e substituir classes abstratas e interfaces

Sobrecarga e reescrita

sobrecarga

Sobrecarga refere-se a uma classe, há dois ou mais métodos do mesmo nome, os parâmetros do tipo de estes métodos, o número, uma sequência diferente, no caso em que o método é sobrecarregado. O mesmo tipo de valor de retorno não pode ser determinado se o valor de retorno de acordo com o tipo de sobrecarga.

Reescreva

meios de reescrita pai-filho classes, subclasses e superclasses ter um nome de método, parâmetros, e o número do mesmo tipo, em seguida, o método é sobrepõe métodos subclasse da classe pai.

contraste

sobrecarga:

  • O mesmo nome de método, parâmetros de diferentes tipos, o número, a ordem
  • O método não requer acesso a uma gama
  • Aplicação do método de dentro de uma classe

Reescreva:

  • Para encontrar dois conformidade com dois grandes pequena

    Com dois: refere-se ao mesmo nome do método e lista de parâmetros
    por duas horas: refere-se ao tipo de retorno e subclasse método declarado anormalmente pequena (ou o mesmo) do que a classe pai
    as subclasses da classe pai que modificadores de acesso método substituído: a grande grande (ou o mesmo)

  • Aplicação da classe pai e subclasse

classes abstratas e interfaces

Uma classe abstrata é uma abstração da fonte do é abstrata: o quê.
Interface é um comportamento abstrato e é abstrato: fazer.

classe abstrata

  1. Uma classe abstracta é modificado com meios de sumário, que podem ser métodos de sumário internos, podem ser métodos não-sumário
  2. Tem uma estrutura e método para herança múltipla não pode ser instanciado.
  3. método abstrato do corpo único método classe abstrata, nenhuma implementação específica.
  4. Após as herda subclasse da classe abstrata, se todos os métodos abstratos da classe pai não é alcançado, então a classe filha é uma classe abstrata não pode ser instanciado.

interface

  1. Interface refere-se o uso da interface modificado, seu interior são métodos abstractos.
  2. Você pode conseguir mais do que, e não pode ser instanciado. No construtor.
  3. interface de tipo de dados básicos são public static final, em vez de uma classe abstrata.
  4. Exemplos da interface não pode conter campos e métodos (estáticos métodos estáticos deve ser implementado, e métodos de interface são resumo, nenhum corpo método) (mas após a adição de métodos java8 estático)

razão final public static :( ea variável static final padrão, sem apresentar a declaração)
porque a interface pode conseguir mais do que por modificação estática, a variável pode ser usado em qualquer lugar , uma abordagem holística variáveis semelhantes, se as necessidades da classe de implementação para usar no caso.
Interface é uma manifestação de papel padronizado, se a modificação não final, em seguida, a realização de uma classe pode ser modificada, em violação do princípio da normalização. Que proíbe a classe de implementação para modificá-lo.

java8 interface Novos Recursos

  1. Pode haver um método estático, mas ele deve ser implementado e não pode ser reescrito.
interface Method{
//    int pp();
    static void printM(){
        System.out.println("print");
    }
}

A existência propósito estática pode ser chamado diretamente pelo nome da classe, assim que a razão não pode ser reescrito se uma classe implementa várias interfaces, e essas interfaces têm o mesmo nome, com a participação do método estático, então a classe de implementação não sabe para chamar a interface o método estático, não estamos autorizados a maneira uso java "para alcançar método estático interface de classe" interface de chamada de abordagem, mas o uso de "método estático da interface de interface" de. Method.printM();Os métodos estáticos pode ser definido e implementado na classe com o mesmo nome que os parâmetros de interface, não pode ser substituído. E o sentido da existência é semelhante à variável estática. Ele pode ser chamado de qualquer lugar. Você não pode ser reescrita (variáveis semelhantes finais)
2. O método pode padrão e ele deve ser implementado. classe de implementação pode substituir o método padrão, mas a declaração a ser exibido para os métodos públicos.

interface Method{
//    int pp();
    static void printM(){
        System.out.println("print");
    }
    
    default void printD(){
        System.out.println("default");
    }
}
class MethidIms implements Method{
    @Override
    public void printD(){
        System.out.println("ims override default");
    }
}

A razão
método padrão e método comum é semelhante ao sentido de sua existência é implementar o método da classe tem um método padrão (semelhante à função padrão), quando a classe de implementação não substituir o método padrão, em seguida, as chamadas de método de interface padrão. Mas quando o padrão é o mesmo método em múltiplas interfaces, ao implementar essas interfaces, para substituir esse método padrão, caso contrário eu não sei a classe de implementação ao qual método de interface padrão a ser invocado.

interface Method{
    static void printM(){
        System.out.println("print");
    }

    default void printD(){
        System.out.println("Method1 default");
    }
}
interface Method2{
    default void printD(){
        System.out.println("Method2 default");
    }
}
class MethodIms implements Method,Method2{
    @Override
    public void printD(){
        System.out.println("ims override default");
    }
}
class MethodIms2 implements Method{
}
public class Main {
    public static void main(String[] args){
        MethodIms ms = new MethodIms();
        ms.printD();
        MethodIms2 ms2 = new MethodIms2();
        ms2.printD();
        Method.printM();
    }
}

//输出
//ims override default
//Method1 default
//print
Publicado 12 artigos originais · ganhou elogios 0 · Visualizações 193

Acho que você gosta

Origin blog.csdn.net/N_a_n/article/details/105021937
Recomendado
Clasificación