java学习笔记-父与子的关系

来源:互联网 发布:phpci连接不上数据库 编辑:程序博客网 时间:2024/06/08 08:00

父类 a= new 子类()

1、父类中private的方法,可以被重写,但是不能被继承。如果被重写了,那么:父类 a=new 子类(),运行的时候,调用的是子类的private方法。

2、为什么子类对象在初始化的时候,要先访问下父类的构造函数:  

因为父类的数据子类可以直接获取,所以子类对象在建立时,需要查看父类是如何初始化这些数据的

3、类的继承知识点
(1)java不支持多重继承,也就是说子类至多只能有一个父类
(2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法
(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承
(4)子类中定义的成员方法,并且这个成员方法的名字,返回类型,及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。

4、super关键字
super关键字在java中的作用是使被屏蔽的成员变量或者成员方法或变为可见,或者说用来引用被屏蔽的成员变量和成员成员方法。super是用在子类中,目的是访问直接父类中被屏蔽的成员。上面的代码也可以这样写:
Java代码
public abstract class A {   
  int i=1;   
  public void printI() {   
    System.out.println("i="+i);   
  }   
}   
public class B extends A{   
    public int i=2;   
    public void printI(){   
        super.printI();   
    }   
    public static void main(String[] args){   
        B b= new B();   
        b.printI();   
           
    }   
}  
注:
JVM实例化程序的过程中,若对子类进行实例化,必然要对父类的构造器进行实例化继承。
C exteds D(){}
C c = new C();
构造器,采取先父后子的关系。
而方法,若调用的方法为子类所覆盖,则主动调用儿子的方法,因为此时,已经继承了父类所拥有的
相关变量,而方法行为,子类具有相对来说的独立性,可以独立调用。
 
D c = new C();
JVM处理过程,也是如此。
先继承D的构造器(基因),再加载C独自的构造器,同时,对相关方法进行相应的调用。


5、父类子类对象初始化顺序

1,在类加载的时候执行父类的static代码块,并且只执行一次(因为类只加载一次);


2,执行子类的static代码块,并且只执行一次(因为类只加载一次);


3,执行父类的类成员初始化,并且是从上往下按出现顺序执行(在debug时可以看出)。


4,执行父类的构造函数;


5,执行子类的类成员初始化,并且是从上往下按出现顺序执行。


6,执行子类的构造函数。

原创粉丝点击