-
封装:
-
隐藏内部实现细节,防止数据被随意修改,提升安全性;由于避免暴露了很多实现细节,只提供对于指定字段的操作或只提供几个方法,这样后续修改维护比较容易。
下面是一个杜撰的示例
public class Card { private static int countId; private String id; private String pwd; private double money; // 这样防止外部传入id,id是由我们自己定义的 public Card(String pwd, double money) { this.id = countId++; this.pwd = pwd; this.money = money; } // 下面不提供id的修改,每张卡id只能是一定的,不能被修改了 }
-
对于学习者来说,降低其理解难度。提高代码的复用性。例如:我们常用的函数就是一种封装,我们只需要传入指定参数,函数就会返回一个值。封装一个类也是如此。
/** * 判断一个对象是否为person * @param obj 需要检测的对象 * @return 是person及其子类返回true,否则返回false */ public boolean isPerson(Object obj) { // ...省略 }
-
-
抽象:
-
使用抽象来限定一个类的所有对外提供的方法。提高代码的维护性,可扩展性。
例如:生活中的插座,有双脚插座,有三角插座。我们不在乎未来可能有多少需要连接插座的设备,我们只是规定,要想用双脚插座,你得有两个金属接触点等等。这样,只要我们制造新设备时,遵循这个双脚插座的要求就可以了。(这是可扩展性)
可以被容易替换(符合可维护):如果我们一直在使用某品牌的插座,突然换一种品牌,基本对我们的设备不会造成太大影响。
-
可以有效过滤掉无需关注的信息。
例如:我们对于车的定义是,能快速移动,能供人操作。
public interface Car{ void quickMove(); void operate(); }
这样我们就知道,车是可以快速移动的。我只要见到一个可以快速移动的非生命体,且可以由人力操控,我们就可以将其定义为车。
至于你说你自己造了一个车,拿给别人用,他变无需关注你的车是几个轮胎,什么引擎,只知道可以拿来操控并且快速移动。这就够了。他可以把自己之前用的车放在家里,改用你的车,也是可以达到快速移动的效果的。
而且你也可以在车的基本接口基础上加上自己的方法,比如,你的车可以敞篷等。
-
-
继承
-
如果我们在两个及以上类中重复一遍一段代码,那我们最好还是将它放在一个父类中,由子类去继承它。这样做的好处显而易见,能达到复用。
/* * 房子类,基本的房子都有的元素。 * 只要你想造房子,继承这个基本的类就可以了 */ public class BaseHouse{ private String position; private double value; public House(String position, double value) { this.position = position; this.value = value; } // 省略getter和setter }
但是也有一点,那就是如果父类的更改使得对于特定的子类不能使用时,那就比较不好了。
-
-
多态
- 指子类可以替换父类,在实际的代码中,调用子类的方法实现。上述提到的车可以换,以及房子,都是实现多态的方法。
封装,抽象,继承,多态。
猜你喜欢
转载自blog.csdn.net/qq_42254247/article/details/103265106
今日推荐
周排行