继承

  继承是面向对象最显著的一个特性。子类继承父类的成员属性与成员方法,只能继承一个父类。下面咱来说道说道继承。

  先来看看下面代码:

  

public class Father{
     private String name = "父类";
    
     static{
         System.out.println("父类静态代码块");
     }
   
     {
         System.out.println("父类非静态代码块");
     }

    public Father(){
         System.out.println("父类构造方法");
    }      
}

public class Child extends Father{
    private String name = "子类";

    static{
        System.out.println("子类静态代码块");
    }

    {
        System.out.println("子类非静态代码块");
    }

    public Child(){
        System.out.println("子类构造方法");
    }
}


public class Main{
    public static void main(String[] args){
        Child child = new Child();
    }
}

 运行之后会输出什么呢?

其实这也显而易见。静态方法在类实例化之前就会被调用,而且只调用一次!而非静态代码块在成员属性声明与构造函数之间执行,每实例化一次执行一次。

类的加载顺序:先在栈中创建引用,通过反射从代码区中加载类,先是静态存储区开辟内存空间,存储静态成员,然后在堆中开辟存储空间,存储非静态成员。

   关于方法重写的小题目可以看这个:http://www.cnblogs.com/jack204/archive/2012/10/29/2745150.html

方法的调用是根据引用的声明类型来加载的,如果引用的实例对象类型是声明类型的子类,则重写的方法将会被子类的方法覆盖。方法重载时,如果改变的参数类型存在继承关系,则调用“血缘关系”最近的方法。

 

与继承很相似的是实现接口,接口是是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。要实现方法的先调用后声明,可以用接口来实现。

posted on 2015-11-19 08:19  Sampwood  阅读(157)  评论(0)    收藏  举报

导航