Java中的三大特性:封装、继承、多态

封装、继承、多态(Fu++聚合支付收款云平台

相信大家都知道 Java 中的三大特性,那就是 封装、继承、多态,那我今天就详细介绍下这几个特性。

1、封装:封装就是使用权限修饰符来实现对属性的隐藏 ,同时提供一些共有的 get / set 方法来对数据进行访问 。这样怎么实现封装的效果的呢 ?我们可以在 getset 方法内部添加一些逻辑控制语句 。比方说在设置金额的时候 ,我就限制传入的 money 不能大于 10000。代码实现可以这样写 。

public void setMoney(int money){
 if(money > 120){
  this.money = 120;
 }
}
public int getMoney(){
 if(this.money < 2){
  System.out.println("下单金额不能小于2元!");
  return -1;
 }
 return this.money;
}

通过上面的示例,我们可以看到对数据的封装有以下优点 ,对成员进行精密的控制且隐藏了实现细节 ,还可以自由的修改方法的内部实现 。

2、继承:就像是儿子继承老子的财富那样 ,子类也可以继承父类的属性和方法 ,但是有些是不能继承的 ,这要回到前面看一看访问修饰符的问题了 。
Java 中只允许单继承 ,就是只能有一个老子 。继承是怎么实现的 ?为什么要有继承 ?我们通过 extends 关键字来标识继承的父类 。而且继承是可以传递的 ,A 继承 BB 继承 C ,那么 C 也是 A 的父类 。父类也叫超类 ,子类也叫基类 。Object 是所有类的超类 。在子类中调用和父类同名的方法时 ,执行的是子类的方法 ,而可以显示的使用 super 来调用父类的方法 。
继承的优点显而易见 ,可以增加代码的复用性 ,但是我们不能为了继承而去继承 ,还要注意继承和组合的概念 ,继承是 “ is a ” 的概念 ,比方说 cat is a animal . 而组合是 “ has a ” 的概念 ,比方说 our body has a leg . 以上两句话可以设计出如下的结构 。

class Animal {
 sleep(){
  System.print.out("动物睡觉");
 }
}
// 表示猫是动物
class Cat extends Animal{
  sleep(){
  System.print.out("猫睡觉");
 }
}

class Leg{
}
// 表示身体里有腿
class Body{
 Leg leg = new Leg();
}

3、多态:多态有什么用?顾名思义 ,多态就是多种状态 。就像是同样的早晨有时候你是精神满满而有时候你是萎靡不振一样 ,我们在调用同一个方法的时候 ,很可能执行的情况也不一样 。这就是 Java 中说的多态 。那为什么会不一样呢 ?还记得刚刚说的子类继承父类的方法吧 ,子类在继承父类方法之后 ,可以对其进行重写 ,当我们调用重写的方法时 ,运行的结果就和父类的结果不一样 。所以说 ,你想要多态 ,先要有继承 。还有一种多态的形式 ,我们称之为 “ 虚拟方法调用 ” 又叫向上转型 ,说的简单一点就是父类的引用指向了子类对象 。像这样 ,父类 Animal 的 a 指向了 Cat 实体 。

Animal a = new Cat();
a.sleep() // 猫睡觉

需要注意的是在使用虚拟方法调用的时候不能调用父类独有的方法 ,这会在运行时报错 ,在编译时没事 ,编译的时候只编译等号左边 。但是在运行的会看具体的对象 ,在子类中找不到相应的方法自然会报错 。

可以总结一下多态的作用了 ,我们使用多态可以达到解耦合和易扩展的目的 ,我们编写不同模块的功能 ,在调用的时候只需要将父类的引用变个方向就行 。只需提供稳定的子类实现 ,父类只负责调用相应的接口方法就行 。这也就是工厂设计模式的原理 。

猜你喜欢

转载自blog.csdn.net/fujaja/article/details/81584598