Java编程思想之七-复用类

 

Java编程思想之七-复用类

 

  • 复用代码是Java众多引人注目的功能之一,但Java要乡成为极具革命性的语言,仅能够复制代码并对之加以改变还不够,还必须能够做更多的事情。
  • 为了使用类而不破坏现有代码,方法之一只需在新的类中产生现有类的对象,由于新的类是由现有类的对象组成,所以这种方法称为组合,此法只复用现有程序代码的功能,而非它的形式。
  • 为了使用类而不破坏现有代码,方法之二是按照现有类来创建新类,无需改变现有形式,采用现有类的形式并在其中添加代码,此法称为继承,继承是面向对象基石之一。
  • 编译器不是简单地为每一个引用都创建默认对象,如果想初始化这些引用,可以将初始化定义于:在定义对象的地方;在类的构造器中;在使用这些对象之前;使用实例初始化。
  • 继承是所有OOP语言和Java语言不可缺少的组成部分,创建一个类时,总是在继承,因此,除非明确指出要继承于其他类,否则就是在隐式地extends Java的标准根类Object
  • “+=”操作符是被Java设计者重载用以处理String对象的操作符之一,另一个是“+”。
  • Java当中,一般的规则是将所有的数据成员都指定为private,将所有的方法指定为public
  • Java中的代理是继承与组合之间的中庸之道,因为将一个成员对象置于所要构造的类中,这就像组合一样,但与此同时再将新类中暴露成员对象的所有方法,这就像继承。
  • Java中如果想要某个类清理一些东西,必须显示得编写一个特殊方法做着件事,并要确保客户端程序员知晓他们必须调用这一方法,既将这一清理动作置于finally字句之中。
  • 关键字try表示,它下面的块是所谓的保护区,这意味着它需要被特殊处理,其中一项特殊处理就是说无论try是怎样退出的,保护区后的finally字句中的代码总是要被执行。
  • 如果Java的基类中拥有某个已被多次重载的方法名称,那么在导出类中定义该方法名称并不会屏蔽其在基类中的任何版本,因此,无论是在该层或者它的基类中对方法进行定义,重载机制都可以正常工作。
  • @Override注解可以防止你在不想重载时而意外地进行了重载。
  • 组合和继承都允许在新类中放置子对象,组合是显示地这样做,而继承则是隐式地做,组合技术通常用于想在新类中使用现有的功能而非它的接口的情形,组合表达的关系是”has-a”既“有一个”的关系,而继承表达的是”is-a” 既“是一个”的关系。
  • 关键字protected起的作用就是,就类用户而言,这是private的,但对于任何继承于此类的导出类或其他任何位于同一个包内的类来说,是可以访问的。
  • 子类引用转换为父类引用的动作,称为向上转型,由于向上转型是从一个较为专用的类型向一个较为通用的类型转换,总体来说,此动作很安全。
  • 在很多情况下,到底是采用组合还是继承,一个最清晰的判断办法就是问一问自己是否需要从新类向基类进行向上转型,如果必须向上转型,则继承是必要的,如果不需要的话,那么就要好好考虑是否需要继承来解决。
  • Java当中的final关键字通常指的是“这是无法改变的”,可能使用到final关键字有三种情况:数据,方法和类。
  • 基本数据类型被final关键字修饰时,必须对该常量进行赋值,一个既是static又是final的域只占据一段不能改变的存储空间。
  • 带有恒定初始值的final static基本类型全用大写字母命名,并且字与字之间用下滑线隔开。
  • 使用final方法的原因之一是把方法锁定,以防任何继承类修改她的含义,想要确保在继承中使方法行为保持不变,并且不会被覆盖;原因之二是效率(以不常用)
  • 类中所有的private方法都被隐式地指定为final
  • 当将某个类的整体定义为final时,表明不打算继承该类,而且也不允许别人继承,也就是说对类的设计永不需要做任何变动,final类中所有的成员都是final的。
  • 尽管面向对象编程对继承极力强调,但在开始一个设计时,一般优先选择组合(或代理),只有在确实必要时才使用继承,因为组合更加灵活,此外,通过对成员类型使用继承技术的添加技巧,可以在运行时改变那些成员对象的类型和行为。

 

你可能感兴趣的:(Java编程思想,Java,编程语言)