提升类属性

简介:

提升类属性与提升类方法一样,都是为了让子类能够继承父类中非私有(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 如何为类、结构体以及枚举添加属性
如何为类、结构体以及枚举添加属性
77 0
|
3月前
|
Java 程序员 C#
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
17 0
|
Java
属性与this关键字
属性与this关键字
58 0
|
Java
父类与子类的上下类型转换
父类与子类的上下类型转换
102 0
基类与派生类对象的关系 派生类的构造函数
🐰 基类与派生类对象的关系 🐰派生类的构造函数
|
Java
16 类变量(静态变量)与类方法(静态方法)
1 .静态变量 静态变量指在类中被static修饰的变量
110 0
|
开发者 Python
类属性和对象属性|学习笔记
快速学习类属性和对象属性
类属性和对象属性|学习笔记
子类到底能不能继承父类的私有属性?
继承就像是我们现实生活中的父子关系,儿子可以遗传父亲的一些特性,在面向对象语言中,就是一个类可以继承另一个类的一些特性,从而可以代码重用,其实继承体现的是is-a关系,父类同子类在本质上还是一类实体;子类通过继承父类的属性的行为,我们称之为继承。Java只支持单继承,不支持多继承。因为多继承容易带来安全隐患:当多个父类定义相同的功能,当功能内容不同的时候,子类对象不确定要运行哪一个,在Java中用另一种形式体现出来,就是接口的多实现。
|
Python
8.5 类的私有变量
class A(object):     _name='zhou'     _sex='F'     def hello(self):         print(self._name)         print(self._sex)     def get_sex(self):         return self._sex          a=A() print(a._name) a.hello() print(a.get_sex()) 1、_xx 以单下划线开头的表示的是protected类型的变量。
617 0