您的位置:首页 > 职场人生

黑马程序员_面向对象之继承

2013-05-19 19:23 183 查看
------- android培训java培训、期待与您交流! ----------

面向对象之继承特点

  (1)把很多类的相同特征和行为进行抽取,用一个类来描述。让多个类和这个类产生一个关系。这个关系就是继承。

java中用extends关键字表示。

  

(2)继承的体系结构

   A:多个具体的对象,不断的向上抽取共享的内容,最终形成了一个体系。这个体系叫做继承体系。

   B:继承体系的学习和使用原则

   学习顶层的内容。因为他是整个体系的共性内容。

   创建子类使用。也就是使用底层的具体对象。

  (3)继承的特点:

   A:java中只能单继承,没有多继承。

   B:java可以有多重(层)继承。

  (4)继承的好处:

   继承的出现提高了代码的复用性。

   继承的出现让类与类之间产生了关系,提供了多态的前提。

  什么时候使用继承?“x”is a y的关系。

  (5)子父类中的成员关系

   A:成员变量

   在子类方法中使用一个变量时:

  该方法的局部变量-->本类中的成员变量-->父类中的成员变量

   B:成员方法

   用子类对象使用一个方法时。

   子类方法-->父类方法。

  

   (6)子类的实例化过程

  子类创建对象时,会先去创建父类的对象,默认是去调用父类的无参构造方法。

   子类构造方法中,第一行默认是super(),因为他继承父类的成员使用,使用前这些成员必须初始化,而他们是父类的成员,所以,必须通过父类进行初始化。所以,会先创建一个父类的对象。当父类没有无参构造方法时必须使用this或者super调用其他的构造方法。

  

  (7)this和super的区别

   this:代表本类对象的引用。

  它用于区分局部变量与成员变量;

  也可以使用成员:this.成员变量,this.成员方法,this(参数)构造方法。

   super:代表父类的父类的引用。

  它用于区分本类变量与父类变量;

  也可以使用成员:super.成员变量,super.成员方法,super(参数)构造方法。

  

  注意事项:

  不要为了获取某个功能就去继承一个类;

  父类中的私有成员子类是访问不到的。

方法的复写

  当子类出现父类一模一样(返回值类型,方法名,参数)的方法时,就会出现方法的复写。

  使用场合:当子类需要父类的功能,而功能主题子类有自己特有的内容时,可以复写父类中的方法,这样即沿袭了父类的功能,有定义了子类特有的内容。

  弊端:

  通过复写会改变父类该方法的内容;

  

  注意:

  1.方法复写时,子类方法权限一定要大于等于父类方法权限,静态方法只能复写静态方法。

  2.私有的方法不能被重写;

       3.可以通过super语句去调用父类被重写的方法;

面试题:

  class Fu{

   int num = 10;

   public Fu() {

   System.out.println("Fu num:"+num);

   }

   public void method(){

   System.out.println("Fu method");

   }

public void function(){

System.out.println("Fu function");

}

  }

  

  class Zi extends Fu{

   int num = 20;

   public Zi(){

   System.out.println("Zi num:"+num);

   }

   public void show(){

   int num = 30;

   System.out.println("num:"+num);

   System.out.println("num:"+this.num);

   System.out.println("num:"+super.num);

   }

   public void method(){

   System.out.println("Zi method");

   }

  }

  

  class ExtendsTest{

   public static void main(String[] args)

   {

   //请按照顺序写出下列程序的运行结果。

   Zi zi = new Zi();//10,20

   zi.show();//30,20,10

   zi.method();//Zi method

   //zi.function();//Fu function

   }

  }

------
9a07
- android培训java培训、期待与您交流! ----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: