basada en Java ocho herencia y el manejo de excepciones

Java general herencia

Cuando la presencia de las mismas propiedades y el comportamiento de la pluralidad de las clases 1, estos contenidos dibujados en una sola clase, entonces la clase no es necesario definir una pluralidad de estas mismas propiedades y comportamiento, mientras que la clase puede ser heredada.

2. Clases en Java y la herencia de clases se pueden lograr a través de la palabra clave extends.

Por ejemplo:class 子类名 extends 父类名 {}

3. Una clase separada se llama la clase padre, la clase base o superclase, sino que puede ser denominado más de una clase derivada clase o subclase.

4. Con la herencia futura, se define una clase, puede sobre la base de una clase existente en, también puede definir sus propios nuevos miembros

formato de la clase heredada

En Java, una clase puede ser declarada por la palabra clave extends es como sigue de otra clase heredada, la forma general:


class 父类 {
}
 
class 子类 extends 父类 {
}

casos heredados
de los padres de los animales


ublic class Animal {
    
     private Integer age;   //
    
     public Animal(){
         System.out.println("Animal construct method");
     }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
     
    public void eat(){
        System.out.println("eat food");
    }
}

clase Gouzi

public class Dog extends Animal{     //class 子类名 extends 父类名 
     private String color; //毛色,	/可以定义特有属性
     
     public Dog(String color){  //可以定义特有属性
         this.color = color;
     }
     
     public void run(){     //可以定义特有属性
         System.out.println("Dog is running");
     }
     
     @Override
     public void eat(){                             
        System.out.println("dog eat bone");    //可以重写父类有的方法
     }
}

características heredadas

  • Subclase de la clase padre no tiene propiedades privadas, métodos.
  • Las subclases pueden tener sus propios atributos y métodos que una subclase puede extender la clase padre.
  • Subclase de la clase padre puede poner en práctica en su propia manera.
  • herencia simple de Java se hereda, pero la herencia múltiple, herencia simple es que una subclase sólo puede heredar de una clase padre, la herencia múltiple es, por ejemplo, una clase hereda de la clase B, C hereda de la clase B
    clase, por lo que la relación es de acuerdo con la clase C es B clase padre es la clase padre una clase de la clase B, que es diferente de la C ++ Java heredado heredado una característica.
  • Para mejorar el acoplamiento entre las clases (deficiencias heredadas, que causará un alto grado de acoplamiento entre los más de cerca el código, el código de la independencia peor)

A partir de dos piezas de código se puede ver, existe una duplicación de código, lo que resulta consecuencia es que el código es grande e hinchado, pero no alto mantenimiento (mantenimiento, principalmente tarde para modificar el tiempo, resulta necesario modificar una gran cantidad de código, propenso a errores), por lo que a partir de estas dos piezas de código para resolver el problema fundamental, tenemos que heredar, se extraerán para formar una matriz a la misma parte de las dos piezas de código, si los mismos métodos y propiedades, que no tienen que repetir

Tipo de herencia

Aquí Insertar imagen Descripción

estupendo con esta palabra clave

palabra clave super: Podemos permitir el acceso a miembros de la clase de los padres por palabra clave super se utiliza para hacer referencia al padre del objeto actual.

esta palabra clave: referencias a su propia.


class Animal {
  void eat() {
    System.out.println("animal : eat");
  }
}
 
class Dog extends Animal {
  void eat() {
    System.out.println("dog : eat");
  }
  void eatTest() {
    this.eat();   // this 调用自己的方法
    super.eat();  // super 调用父类方法
  }
}
 
public class Test {
  public static void main(String[] args) {
    Animal a = new Animal();
    a.eat();
    Dog d = new Dog();
    d.eatTest();
  }
}

Los resultados operativos

animal : eat
dog : eat
animal : eat

palabra clave final

palabra clave para declarar clase final se puede definir como una clase no puede ser heredado, que es la clase final; o para la modificación de método, que no puede ser anulado por subclases:

Declaración de categorías:

final class 类名 {//类体}

Modo de empleo:

修饰符(public/private/default/protected) final 返回值类型 方法名(){//方法体}

clase abstracta

clase abstracta

  • Además de la clase abstracta no objetos instanciar, todavía existen otras clases funcionales, miembro variables, métodos y constructores de los miembros acceder a la misma manera que una clase ordinaria.
  • Puesto que la clase abstracta no puede ser objetos instanciados, clase abstracta debe ser heredado, que puede ser utilizado
  • Una clase abstracta se emplea comúnmente como un padre, pero no puede haber un método abstracto para permitir subclases de lograr.
  • modificador abstract, indica que la clase es una clase abstracta
    • distinción de clase abstracta y la clase general: puede haber un método abstracto clase abstracta (método sólo se define, no cuerpo del método, y no pueden ser instanciado clase abstracta)
      método abstracto
  • Si desea diseñar una clase tal que contiene un miembro especial del método, la implementación específica del método se determina por sus subclases, entonces se puede declarar este método como un método abstracto en la clase padre.
  • Resumen La misma palabra clave puede utilizarse para declarar métodos abstractos, métodos abstractos contienen sólo un nombre de método, y ningún cuerpo del método.
  • método abstracto no está definido, directamente detrás del nombre del método con un punto y coma en lugar de llaves.

declaración de la clase abstracta

   public abstract class AbstractPerson {
    	
	public String name;
	public int age;
	
	//abstract 声明这个方法是一个抽象方法
	public abstract void say();
	
	public void eat() {
		System.out.println("正在吃饭......");
	}
	
}

Subclase hereda la clase abstracta

public class JapaneseExtendsAbstractPerson extends AbstractPerson{

	/**
	 * 子类中必须实现抽象类中的抽象方法
	 */
	@Override
	public void say() {
		System.out.println("雅蠛蝶");
	}
}

Resumen resume las disposiciones de

  1. Una clase abstracta no puede ser instanciada (principiantes fácil cometer el error), si se crea una instancia, será el error, el compilador no puede pasar. Sólo la clase abstracta subclases no abstractas pueden crear objetos.

  2. clase abstracta no necesariamente contiene métodos abstractos, pero hay métodos abstractos de la clase debe ser clase abstracta.

  3. método de implementación del método Método clase abstracta meramente declarada abstracta no tiene un cuerpo, no se da es funciones específicas.

  4. Constructors, métodos de clase (utilizando un método estático modificado) no se pueden declarar métodos abstractos.

  5. Las subclases de la clase abstracta debe implementar los métodos abstractos dan una clase abstracta específica, a menos que las subclases son abstractos.

manejo anormal y excepción

Las anomalías estructurales de Aquí Insertar imagen Descripción
1. Todas las excepciones se heredan de Throwable, es el ancestro común de todas las excepciones.

2.Throwable tiene dos subclases, errores y excepciones. Error: error no es anormal, pero desde el programador para controlar el problema. Los errores suelen ser ignorados en el código. Por ejemplo, cuando, se produce un error un desbordamiento de pila, no pueden comprobar en compilación

3.Exception, es otra muy importantes clases de excepción. Proporciona excepciones son anormal del programa en sí mismo puede manejar. Y la diferencia de error es anormal, la anomalía puede ser procesado, y el error no se maneja. **
4 excepción verificado: el más representativo de excepción comprobada es una excepción debido a un error del usuario o un problema, es el programador impredecible. Por ejemplo cuando se desea abrir un archivo que no existe, se produce una excepción, la excepción no puede ser simplemente ignorado en tiempo de compilación.
Una excepción es probable que sea un programador para evitar una excepción en tiempo de ejecución: Excepción 5 carreras. En contraste con el examen de la anomalía, la excepción puede ser ignorada en tiempo de compilación en tiempo de ejecución.
6.Exception es tan inusual matriz, puede capturar todas las excepciones

Hay muchas razones para una excepción ocurre, por lo general contiene las siguientes categorías:

  • datos de entrada del usuario ilegal

  • Para abrir un archivo que no existe.

  • Conectado de interrupción de comunicación de red, o desbordamiento de la memoria JVM.

Estas anomalías, ya sea a causa de un error del usuario causaron algunos errores de procedimiento provocados, porque hay otros errores físicos.

excepciones comunes

. * Java.lang bajo excepciones:

1, java.lang.NullPointerException

Excepción de puntero nulo: llama objeto no inicializado o no existe el objeto.

2, java.lang.ClassNotFoundException

clase anormal no existe: el nombre y la ruta de la clase es incorrecta.

3, java.lang.NumberFormatException

Cadena en un número de anomalías.

4, java.lang.IndexOutOfBoundsException

subíndice de matriz limita excepción.

5, java.lang.IllegalArgumentException

error de parámetro no válido.

6, java.lang.IllegalAccessException

No hay excepciones de acceso.

7, java.lang.ArithmeticException

excepción de matemáticas.

8, java.lang.ClassCastException

Tipo de datos de excepción de conversión.

9, java.lang.InterruptedException

Enhebrar excepción de interrupción.

10, java.lang.OutOfMemoryException

Anormal falta de contenido.

11, java.lang.NoClassDefFoundException

La clase no se define una excepción.

12, java.lang.NoSuchMethodException

Método de excepción no existe.

13, java.lang.NoSuchFiledException

propiedad anormal no existe.

Bajo java.io. * Excepción:

14, java.io.IOException

Entrada y salida de excepción.

15, java.io.FileNotFoundException

el archivo no existe anormal.

. * Java.net bajo excepciones:

16, java.net.ConnectException

Red excepción de conexión.

17, Java.net.SocketTimeoutException

tiempo de espera de conexión de red es una excepción.

. * Java.rmi bajo excepciones:

18, Java.rmi.ServerRuntimeException

Servidor que ejecuta anormal.

. * Java.text bajo excepciones:

19, java.sql.SQLException

Excepción de ejecución de SQL.

. * Java.text bajo excepciones:

20, Java.text.ParseException

excepción de la traducción.

Detectar la excepción

Try de uso y las palabras clave de captura puede detectar la excepción. try / catch se coloca donde puede ocurrir la excepción.

La sintaxis del código bloque try / catch llamado código de protección, usando el try / catch sigue

try
{
   // 程序代码
}catch(ExceptionName e1)
{
   //Catch 块
}

sentencia catch para capturar excepciones incluyen el tipo de declaración. Cuando se produce una excepción en el bloque de código protegido, tratar bloque catch tarde será verificada.

Si se produce la anormalidad en el bloque de captura contenida, la excepción será transferido al bloque de captura, y que se pasa como un parámetro para el método.
Ejemplos

El siguiente ejemplo se ha declarado un array de dos elementos, cuando el código intenta acceder al tercer elemento de la matriz cuando se va a lanzar una excepción.


// 文件名 : ExcepTest.java
import java.io.*;
public class ExcepTest{
 
   public static void main(String args[]){
      try{
         int a[] = new int[2];
         System.out.println("Access element three :" + a[3]);
      }catch(ArrayIndexOutOfBoundsException e){
         System.out.println("Exception thrown  :" + e);
      }
      System.out.println("Out of the block");
   }
}

resultados de compilación

Exception thrown  :java.lang.ArrayIndexOutOfBoundsException: 3
Out of the block

bloque de captura múltiple

Un bloque try siguió detrás del caso de captura, donde una pluralidad de bloques de captura de llamada múltiple.

sintaxis del bloque de captura múltiple es el siguiente:


try{
   // 程序代码
}catch(异常类型1 异常的变量名1){
  // 程序代码
}catch(异常类型2 异常的变量名2){
  // 程序代码
}catch(异常类型2 异常的变量名2){
  // 程序代码
}

El segmento de código anterior contiene tres bloques de captura.

Usted puede agregar cualquier número de bloque catch después de la sentencia try.

Si se produce una excepción en el código de protección, se produce una excepción al primer bloque catch.

Si lo hace coinciden con el tipo de datos ExceptionType1, donde será capturado.

Si no, va a ser transmitida al segundo bloque catch.

Por lo tanto, hasta que todas las excepciones son capturadas por un retén o bloques.
Ejemplos

Este ejemplo muestra cómo utilizar múltiples try / catch.

try {
    file = new FileInputStream(fileName);
    x = (byte) file.read();
} catch(FileNotFoundException f) { // Not valid!
    f.printStackTrace();
    return -1;
} catch(IOException i) {
    i.printStackTrace();
    return -1;
}

finalmente, la palabra clave

finalmente, la palabra clave para crear un bloque de código después del bloque de código se ejecuta intento.

Si se produce la anomalía, siempre será ejecutado por último código de bloque.

En un bloque finally, el tipo limpio y similares pueden ejecutar terminando la naturaleza de rehabilitación declaraciones.

Por último bloque aparece en los bloques de captura definitivos, la sintaxis es la siguiente:

try{
  // 程序代码
}catch(异常类型1 异常的变量名1){
  // 程序代码
}catch(异常类型2 异常的变量名2){
  // 程序代码
}finally{
  // 程序代码
}

Ejemplos

public class ExcepTest{
  public static void main(String args[]){
    int a[] = new int[2];
    try{
       System.out.println("Access element three :" + a[3]);
    }catch(ArrayIndexOutOfBoundsException e){
       System.out.println("Exception thrown  :" + e);
    }
    finally{
       a[0] = 6;
       System.out.println("First element value: " +a[0]);
       System.out.println("The finally statement is executed");
    }
  }
}

Los ejemplos anteriores resultados recopilados son los siguientes:

Exception thrown  :java.lang.ArrayIndexOutOfBoundsException: 3
First element value: 6
The finally statement is executed

Tenga en cuenta las siguientes consideraciones:

captura no puede existir independientemente de la oportunidad.
Añadir por último bloque no es obligatoria en el trasero try / catch.
Después de que el bloque de intento de captura no puede ni bloquear ni finalmente.
tratar, coger, finalmente, no se puede añadir cualquier código entre bloques.

Lanzar una excepción

Emite directamente tirado JVM: Eso es, en el procedimiento principal, el código no parece probable que sea anormal para el try-catch

El método subyacente puede lanzar una llamada superior excepción

Por ejemplo: la definición de un método, el cociente, declaración método arrojará una excepción, a continuación, cuando se llama a este método le recordará permitido utilizar el try-catch

public static int divide(int a,int b) throws Exception{
	return a/b;
}

Luego hay dos casos de uso
I., puede optar por seguir vomitando

// divide方法的调用者就能获得提示:如何处理异常
// 可以选择继续往上抛
main thows Exception {
	
	divide(5,0);

}

Caso 2, también se puede optar por capturar una excepción, fuera sin torcer

main{
	
	try{
	   divide(5,0);
	}catch(Exception e){
	   sysout(e.getMessage());
	}
	
}
Publicado 44 artículos originales · ganado elogios 0 · Vistas 876

Supongo que te gusta

Origin blog.csdn.net/heartless_killer/article/details/98243963
Recomendado
Clasificación