Java面向对象的四个特征及五大设计原则

Java面向对象的四个特征:继承、封装、多态、抽象及五大设计原则

        继承:是子对象可以继承父对象的属性和行为,亦即父对象拥有的属性和行为,其子对象也就拥有了这些属性和行为。比如:父类为人,子类可以是 男人和女人,男和女都继承于父类,但是一个子类只能继承一个特殊类,不能继承多个。但一个一般类可以实现多个接口。子类继承父类的时候,可以重写父类的方法,也可以有自己的方法。

       继承的特点:

  • 1.子类继承父类,通过关键extends

  • 2.子类对象可以调用父类中(public protected)属性和方法 当做自己的来使用

  • 3.子类可以添加自己的属性和方法

  • 4.子类从父类中继承过来的方法不能满足子类需要,可以在子类中重写(覆盖)父类的方法

  • 5.每一个类都有继承类,如果不写extends,默认继承Object类

  • 6.Java中只存在单继承,目的是为了让类变的更安全

  • 7.继承在内存中的存储形

 关于this和super的使用:

  •  this和super都是指代词,代指对象。
  •  this代替的是当前执行方法的对象,不一定是当前类的
  •  super代指的是当前执行方法时对象的父类对象
  •  都能调用一般属性和一般方法,可以放在类成员任意位置
  •  调用一般方法是可以来回调用(编译能过,执行可能产生问题)
  •  构造方法之间不能来回调用(编译提示出错)

this和super区别图解:

       封装:这里的封装主要是针对类的封装。一个业务逻辑的实现往往需要多个对象和方法去实现,封装旨在对不同对象的方法进行封装处理,即不同对象的方法处在一个单独的对象类中。把对象的全部属性和全部服务结合在一起,形成不可分割的独立的单位(对象);信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界〔或者说形成一道屏障〕,只保留有限的对外接口使之与外部发生联系。比如javaBean中属性的get()、set()方法。

       Java 的访问权限修饰关键字范围图解:

封装的优点:

  • 良好的封装能够减少耦合。
  • 类内部的结构可以自由修改。
  • 可以对成员进行更精确的控制。
  • 隐藏信息,实现细节。

       多态:允许不同类的对象对同一消息做出响应。实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。

多态体现: 

       1. 需要现有继承关系

       2.父类类型的引用指向子类对象(上转型)

       3.该引用只能调用父类中定义的属性或方法

       4.如果子类中将父类的方法重写,那么调用的是子类重写的方法

       5.如果子类与父类有同名的属性,执行父类的属性   

       6.若想要调用子类中独有的成员,将身份还原回去(下转型)

       7.为了避免转型产生的问题,可以使用instanceof进行判断

多态的作用:消除类型之间的耦合关系。

方法重写与方法重载总结:

       抽象:Java中抽象可以是抽象类、抽象方法,使用abstract修饰。其中抽象类中可以有抽象方法和非抽象方法,抽象方法。据有抽象方法的类一定是抽象类。抽象方法一般只有方法名,没有方法的实现。如:public abstract void test(); 且抽象方法的权限修饰必须是protected public 的,因为子类在继承抽象父类的时候,必须要实现父类所有的抽象方法。

Java五大设计原则

1、单一职责原则

  一个类只负责一种职责,只有这种职责的改变会导致这个类的变更。绕口一点的正统说法:不要存在多于一个原因导致类变更

  假如:类T 负责有两种职责 P1,P2;当P1发生改变时,需要修改类T,这时候可能会对P2造成影响。

  所以不要为了图代码量少,二将不同职责放入到一个类里面。

2、里氏替换原则

  只要父类出现的地方,都可以用子类替换,并且不会对程序造成影响,在实现上来说就是子类不要覆盖父类的非抽象方法,但可以重载。

  重载时需要注意,入参的要求要比父类宽松(保证可以进入),返回要比父类更加严格(保证出去不会有问题),这也正是实现里氏替换的基础。

3、依赖倒置原则

  高层模块不应该依赖低层模块,二者都应该依赖其抽象,翻译一下就是面向接口编程;接口一般是行为的集合,也就是尽可能的对行为抽象。

  抽象不应该依赖细节,细节应该依赖抽象。

4、接口隔离原则

  翻译一下就是接口的功能尽可能单一,接口本质上是两个类之间关系的纽带,关系中不需要有的,在接口中不应该体现。如:A 通过接口I依赖B,假如接口I中有A 不需要的方法,那么这个接口就是不合理的,B必须要实现这个不需要的方法,徒劳无功。

5、开放封闭原则

  尽量通过扩展来面对需求的更改或者系统的变化,尽量不要对原有内容修改。

 

       借鉴博客:

        https://blog.csdn.net/qq_29750461/article/details/80871818

        https://www.jianshu.com/p/7a019aa4c182

        https://www.cnblogs.com/mengchunchen/p/7890729.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值