Diretório do artigo
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
- 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
- Tem uma estrutura e método para herança múltipla não pode ser instanciado.
- método abstrato do corpo único método classe abstrata, nenhuma implementação específica.
- 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
- Interface refere-se o uso da interface modificado, seu interior são métodos abstractos.
- Você pode conseguir mais do que, e não pode ser instanciado. No construtor.
- interface de tipo de dados básicos são public static final, em vez de uma classe abstrata.
- 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
- 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