浅谈继承的那些细节知识点--java中继承的简单应用。

来源:互联网 发布:怎么汉化软件 编辑:程序博客网 时间:2024/05/16 17:46

继承的基本概念就不说了,大家都应该知道的。用现在的话说就是拼爹!!下面就是一些最简单的继承了。

看代码:

public class Person {
public int age;
public String name = "李白";
public Person () {

}
public void say() {
System.out.println("爸爸说");
}
}

public class Son extends Person {
int age = 4;
String name = "李明";
public Son() {

}
public void say() {
System.out.println("儿子说");
}
}

public class Test {
public static void main(String[] args) {
Son s = new Son();
s.say();
}
}

这是第一个细节点:当子类引用指向子类对象的时候,也就数创建实例对象。父类和子类中都含有的方法(子类继承父类的方法),优先调用子类中的方法,不管有么有重写。

第二个细节点:当子类中并没有say();方法的时候,就会从父类中找(拼爹的时候到了)。如果父类中含有该方法,子类对象便会调用,如果还是么有那就会报错;

第三个细节点:父类中一些属性如果是private属性的那么子类是没办法访问和继承的。如age,和name。

第四个细节点:子类继承父类,父类引用指向子类对象。如 Person man = new Person();man.say);优先调用子类的方法,方法是可以重新改写的,但是man.age调用的是Person的age.属性是不可以重写的。

第五个细节点:当子类对象调用子类中的方法的时候,可以自方法内部调用父类的方法。此时需要使用super关键字。并且不用放在第一行也可以编译通过。


第五点:关于代码优先执行的顺序。下面看一个例子:同样是Son继承了Person.只不过这次测试的是代码执行的顺序。每个类中都包含了静态代码块,代码块,无参的构造函数。至于源代码我相信大家看了运行结果的时候就知道了。
这次运行的main 方法内部构造的是Son的实例。同时Son继承Person。在main方法内部创建Son类实例的时候,运行的结果就是上图所示。
总体是这样理解的:当new关键字创建实例的时候。首先访问的是类,所以就先执行了静态代码块(该代码块属于是静态的属于类)。之后再运行Person中的代码块和Person中的构造函数。最后在执行Son中的代码块和Son的构造函数。。这样的顺序在继承中是非常重要的。面试的时候基础的问题。

0 0
原创粉丝点击