提升类属性

简介:

提升类属性与提升类方法一样,都是为了让子类能够继承父类中非私有(private)的属性字段,这样做当然是实现了代码重用了。

重构前代码例子如下:

 
  1. abstract class Animal {  
  2.     // some fields  
  3. }  
  4.  
  5. class Dog extends Animal {  
  6.     public String name;  
  7. }  
  8.  
  9. class Cat extends Animal{  
  10.     public String name;  

很明显上面的 Dog 类和 Cat 类存在相同属性,而且它们都是 Animal 抽象类的子类,此时应该将 name 属性提升到 Animal 类中以避免重复代码,如下:

 
  1. abstract class Animal {  
  2.     protected String name;  
  3.     // some fields  
  4. }  
  5.  
  6. class Dog extends Animal {  
  7.     // field "name" from Animal  
  8. }  
  9.  
  10. class Cat extends Animal{  
  11.     // field "name" from Animal  


这种提升属性的重构方法在设计模式中使用得更加明显,像装饰模式(Decorator),其中的抽象装饰者类中就拥有了自身类型的引用属性,并在构造方法中根据传入的具体装饰者(即其子类)来初始化该自身类型的属性。每个子类都获得了可以装饰自身的父类引用。



本文转自 xxxx66yyyy 51CTO博客,原文链接:http://blog.51cto.com/haolloyin/343780,如需转载请自行联系原作者

相关文章
|
存储 Swift 索引
28 如何为类、结构体以及枚举添加属性
如何为类、结构体以及枚举添加属性
69 0
|
6月前
|
JavaScript
TypeScript【类的继承、访问修饰符、readonly 修饰符、存取器、实例方法与静态方法、实例属性与静态属性、静态属性、抽象类】(三)-全面详解(学习总结---从入门到深化)
TypeScript【类的继承、访问修饰符、readonly 修饰符、存取器、实例方法与静态方法、实例属性与静态属性、静态属性、抽象类】(三)-全面详解(学习总结---从入门到深化)
62 0
|
Java
属性与this关键字
属性与this关键字
50 0
|
开发者 Python
类属性和对象属性|学习笔记
快速学习类属性和对象属性
类属性和对象属性|学习笔记
|
前端开发 开发者 Python
私有属性和方法的使用 | 学习笔记
快速学习 私有属性和方法的使用
私有属性和方法的使用 | 学习笔记
|
C# 索引
C#编程-97:索引器在类中的使用
C#编程-97:索引器在类中的使用
106 0
C#编程-97:索引器在类中的使用
|
开发者 Python
私有属性的继承特点 | 学习笔记
快速学习 私有属性的继承特点
103 0
子类到底能不能继承父类的私有属性?
继承就像是我们现实生活中的父子关系,儿子可以遗传父亲的一些特性,在面向对象语言中,就是一个类可以继承另一个类的一些特性,从而可以代码重用,其实继承体现的是is-a关系,父类同子类在本质上还是一类实体;子类通过继承父类的属性的行为,我们称之为继承。Java只支持单继承,不支持多继承。因为多继承容易带来安全隐患:当多个父类定义相同的功能,当功能内容不同的时候,子类对象不确定要运行哪一个,在Java中用另一种形式体现出来,就是接口的多实现。
|
存储 Java
类变量和类方法
类变量和类方法
下一篇
无影云桌面