huhuszl

知行合一 
[ 随笔 -    文章 -    评论 -    阅读 - ]
圆龄:4个月
粉丝:10
关注:6
首页
订阅
联系
管理
阅读排行榜
......
评论排行榜
......
推荐排行榜
......
随笔分类
......
随笔档案
......
最新评论
......
最新随笔
......

面向对象

三大特性

封装

  • 封装是把客观事物抽象成类,并且把自己的属性和方法让可信的类或对象操作,对不可性的隐藏。

继承

  • 继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

  • 继承得到的新类称为“子类”或“派生类”。被继承的父类称为“基类”、“父类”或“超类”。

  • 继承的过程是一个从一般到特殊的的过程。

  • 继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;

  • 访问权限

    访问修饰类型 本类 同包 子类 其他
    private
    默认
    protected
    public

多态

  • 多态性(polymorphism)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。这就意味着虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。
  • 特点
    • 对象类型和引用类型之间具有继承(类)/实现(接口)的关系;
    • 引用类型变量发出的方法调用的到底是哪个类中的方法,必须在程序运行期间才能确定;
    • 多态不能调用“只在子类存在但在父类不存在”的方法;
    • 如果子类重写了父类的方法,真正执行的是子类覆盖的方法,如果子类没有覆盖父类的方法,执行的是父类的方法。

六个基本原则

  • 单一原则

    一个类只做它该做的事情(高内聚)。在面向对象中,如果只让一个类完成它该做的事,而不涉及与它无关的领域就是践行了高内聚的原则,这个类就只有单一原则

  • 开闭原则

    • 软件实体应当对扩展开发,对修改关闭,要做到开闭有两个要点:
      1. 抽象是关键,一个系统中如果没有抽象类或接口系统就没有扩展点
      2. 封装可变性,将系统中的各种可变因素封装到一个继承结构中,如果多个可变因素混杂在一起,系统将变的复杂而繁乱。
  • 里氏替换原则

    • 任何时候都可以用子类型替换掉父类型,子类一定是增加父类的能力而不是减少父类的能力
  • 依赖倒置原则

    • 面向接口编程。高层模块不应该依赖底层模块,两者都应该依赖其抽象,尽可能使用抽象类型而不用具体类型,因为抽象类型可以被它的任何一个子类型所替代。
  • 接口隔离原则

    • 类间的依赖关系应该建立在最小的接口上,不能大而全,接口表示能力,一个接口只应该描述一种能力,接口也应该高度内聚
  • 迪米特法则

    • 由叫最少知识原则,一个对象应该对其他对象有尽可能少的了解。

面向对象和面向过程的区别?

两者的主要区别在于解决问题的方式不同:

  • 面向过程把解决问题的过程拆成一个个方法,通过一个个方法的执行解决问题。
  • 面向对象会先抽象出对象,然后用对象执行方法的方式解决问题。

另外,面向对象开发的程序一般更易维护、易复用、易扩展。

接口和抽象类有什么共同点和区别?

共同点

  • 都不能被实例化。
  • 都可以包含抽象方法。
  • 都可以有默认实现的方法(Java 8 可以用 default 关键字在接口中定义默认方法)。

区别

  • 接口主要用于对类的行为进行约束,你实现了某个接口就具有了对应的行为。抽象类主要用于代码复用,强调的是所属关系。
  • 一个类只能继承一个类,但是可以实现多个接口。
  • 接口中的成员变量只能是 public static final 类型的,不能被修改且必须有初始值,而抽象类的成员变量默认 default,可在子类中被重新定义,也可被重新赋值。
posted @ 2023-02-21 22:21  huhuszl  阅读(14)  评论(0编辑  收藏  举报