码迷,mamicode.com
首页 > 编程语言 > 详细

thing in java笔记

时间:2016-05-21 15:58:31      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

7.一个方法为什么要声明称final呢?  final方法能防止别人覆盖,但更重要的一点,它可以"关闭"动态绑定(发生动态绑定的条件:继承,方法覆盖,父类引用指向子类),告诉编译器不需要进行动态绑定,这样编译器就可以为final方法调用更高效的代码

过载:是指同一样东西在不同的地方具有不同的含义; 覆盖:随时随地都只有一种含义,只不过原来的含义被后来的含义取代了;(假设:public class A;  void overWrite(int A) ; void overWrite(A a) 第一个A是指一个int类型的变量,第二个A是一个类型;)

 

假如过度的使用继承,也会使自己的设计变得不必要的复杂起来.事实上,当我们以一个现有的类为基础建立一个新的类的时候,如果首先选择继承,会使情况变得复杂起来.更好的选择是"合成".

常规的设计准则:用继承表达行为间的差异,并用成员变量表达状态的变化.

interface Actor {

  void act();

}

class HappyActor() implements Actor {

  public void act() {

    System.out.println("HappyActor");

  }

}

class SadActor implement Actor() {

  public void act() {

    System.out.println("SadActor");

  }

}

class Stage() {

  Actor a = new HappyActor();

  void change() {

    a = new SadActor();

  }

  void go() {

    a.act();

  }

}

public class Transmogrify() {

  public static void main(String[] args) {

    Stage s = new Stage();

    s.go();//print "HappyActor"

    s.change();

    s.go();//print "SadActor"

  }

}

Stage通过合成技术允许他自己的状态发生变化,那种状态的改变(s变量的改变)同时也产生了行为的变化.

 

thing in java笔记

标签:

原文地址:http://www.cnblogs.com/-xuzhankun/p/5514854.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!