Herdar
1. herdou o papel:
- O papel básico: herda subclasse classe pais
- Major (importantes) função: por causa de heranças, apenas o método de cobertura e polimorfismo
2. características herdadas:
- java única herança apoio múltipla, mas herança apoio indireto
- Subclasse herda a classe pai, além de o construtor não pode ser herdada , o resto pode ser herdada, mas não pode acessar diretamente a propriedade privada em uma subclasse pode ser acessado por meios indiretos
- Essa herança: herança da classe pai subclasse, a classe pai é herdado métodos retornam para o seu tudo, então o método da subclasse não é invocado quando a classe pai, mas o seu próprio método.
- Se a turma não herda qualquer exibe classe, a classe Object herdar padrão (raiz da árvore de herança Java)
3. Quando vai herdar?
- Aqueles que adotar "é a" pode ser descrito, pode herdar
- Antes de considerar duas herança de classe, considere o efeito de uma combinação de dois tipos
- Por exemplo: gato é cão animal é animal
4. desvantagens herdada:
o brilho elevado acoplamento, subclasse pai modificado implicada
Exemplo:
//如下将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())
}
}
Java análise de código fonte de herança
/**
* 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
classe teste {pública
// estática variável
estática Student = new Student () ;
//入口
public static void main(String[] args){
//System.out.println("Hello");
//一样的结构
Test.s.exam();
}
}
Classe Student {
// exemplo método
pública Exam (void) {
System.out.println ( "Exame ....");
}
}