notas de estudio Java - Herencia

Heredar

1. heredó el papel:

  • La función básica: hereda de subclases de la clase padre
  • Papel principal (importante): debido a la herencia, sólo el método de cobertura y el polimorfismo

2. características heredadas:

  • Java sólo soporta herencia múltiple, pero la herencia apoyo indirecto
  • Subclase hereda la clase padre, además del constructor no puede ser heredada , el resto puede ser hereditaria, pero no puede acceder directamente a la propiedad privada en la subclase se puede acceder por medios indirectos
    • Esta herencia: la herencia de la clase padre subclase, la clase padre se hereda métodos devuelven para su todo, entonces el método subclase no se invoca cuando la clase padre, pero su propio método.
  • Si una clase no hereda cualquier muestra de clase, la clase hereda por defecto de objetos (Java raíz árbol de herencia)

3. Cuando heredará?

  • Aquellos que adoptan "es un" puede describir, pueden heredar
  • Antes de considerar dos herencia de clases, tenga en cuenta el efecto de una combinación de dos clases
    • Por ejemplo: gato es el perro de animal es animal

4. inconvenientes heredados:
acoplamiento alto, subclase matriz modificada implicados

Por ejemplo:

//如下将Student,Teacher泛化为Person类:
public class Person{
    private String name;
    private int age;
    public Person(String name, int age){
        this.name = name;
        this.age = age;
    }
	//置取方法
	public void setName(String name){
		this.name = name;
	}
	public String getName(void){
		return this.name;
	}
	
    public void display(){
        System.out.println("姓名:" + name);
    }
}


Student类:
public class Student extends Person{
    private double grade;

	public Student(String name, int age, double grade){
        super(name, age);
        this.grade = grade;
    }
    public void display(){
        System.out.println("成绩: " + this.grade);
    }
}


public class ExtendsTest01{
	public static void main(String[] args){
		Student s = new Student("Li Si", 23, 100);
                //getName()是子类从父类继承过来的方法
		System.out.println("姓名:" + s.getName())
	}
}

Código fuente de Java análisis de la herencia

/** 
* Object.java中
    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
*/
public class ExtendsTest02{
	public static void main(String[] args){
		//创建一个对象
                ExtendsTest02 ts = new ExtendsTest02();
		String retValue = ts.toString();
		System.out.println(retValue);
		//如果直接输出"引用"?
		System.out.println(ts);
		
	}
}
![](https://img2020.cnblogs.com/blog/1720775/202004/1720775-20200404213624605-118128102.png)
####分析:
1. ExtendsTest02类默认继承Object类,所以是子类对象调用父类的实例方法。
2. 输出结果"等同"看作调用对象在堆内存中的地址,是实际地址经过“哈希算法”计算出的十六进制地址		
3. 如果直接输出"引用"
- println方法会先自动调用“引用.toString()”
- 然后输出toString()方法的结果
		














### System.out.println

Prueba de la clase {public
variables // estática
estática Estudiante s = new Estudiante () ;

//入口
public static void main(String[] args){
	//System.out.println("Hello");
	//一样的结构
	Test.s.exam();
}

}
Clase Estudiante {
// ejemplo del método
pública examen (void) {
System.out.println ( "Examen ....");
}

}

Supongo que te gusta

Origin www.cnblogs.com/zy200128/p/12634397.html
Recomendado
Clasificación