首页 > 其他分享 >面向对象

面向对象

时间:2023-02-21 22:36:32浏览次数:27  
标签:继承 子类 接口 面向对象 对象 父类 方法

三大特性

封装

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

继承

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

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

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

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

  • 访问权限

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

多态

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

六个基本原则

  • 单一原则

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

  • 开闭原则

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

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

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

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

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

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

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

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

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

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

共同点

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

区别

  • 接口主要用于对类的行为进行约束,你实现了某个接口就具有了对应的行为。抽象类主要用于代码复用,强调的是所属关系。
  • 一个类只能继承一个类,但是可以实现多个接口。
  • 接口中的成员变量只能是 public static final 类型的,不能被修改且必须有初始值,而抽象类的成员变量默认 default,可在子类中被重新定义,也可被重新赋值。

标签:继承,子类,接口,面向对象,对象,父类,方法
From: https://www.cnblogs.com/huhuszl/p/17137100.html

相关文章

  • 面向对象(上)
    一、设计类 属性=成员变量=field=域、字段 方法=成员方法=函数=method 创建类的对象=类的实例化=实例化类二、类和对象的使用 1.创建类,设计类的成员 2.创建类......
  • 面向对象
    面向对象面向过程思想步骤简单清晰,第一步做什么,第二步做什么面向过程适合处理一些较为简单的问题面向对象思想物以类聚,分类的思维模式,思考问题首先会解决问题需要......
  • 面向对象类的概念
    前言在上一篇文章中,壹哥给大家介绍了面向对象和面向过程的概念,并介绍了两者的区别。但是上一篇文章中的内容,介绍的还是比较笼统。接下来壹哥会在本篇文章中,再单独给大家详......
  • golang 面向对象
    1.张老太养了两只猫:一只名字叫小白,今年3岁,白色。还有一只叫小花,今年100岁,花色。请编写一个程序,当用户输入小猫的名字时,就显示该猫的名字,年龄,颜色。如果用户输入的小猫名字......
  • 第十五章 面向对象程序设计
    第十五章面向对象程序设计OOP:概述面向对象程序设计(object-orientedprogramming)的核心思想是数据抽象、继承和动态绑定。继承(inheritance):通过继承联系在一起的类构......
  • 面向对象 定义一个类 手机; 调用这个类 具体化一个小米手机
    1.定义一个类packagecom.fqs.demo1;publicclassPhone{//属性(成员变量)不能给具体的值Stringbrand;doubleprice;//行为(方法)publicv......
  • 【JavaScript】18_面向对象,类与属性
    1、面向对象面向对象编程(OOP)程序是干嘛的?程序就是对现实世界的抽象(照片就是对人的抽象)对象是干嘛的?一个事物抽象到程序中后就变成了对象在程序的世界中,一切皆对象面向对象......
  • C++基于面向对象思想的ATM 系统设计与实现(三级项目)[2023-02-19]
    C++基于面向对象思想的ATM系统设计与实现(三级项目)[2023-02-19]实验二基于面向对象思想的ATM系统设计与实现(三级项目)一、实验目的:(1)掌握派生类的使用方法。(2)......
  • java面向对象
    java面向对象以类的方式组织代码,以对象的组织(封装)程序。一个类里面只有方法和属性一个项目至多只有一个main方法创建对象类是抽象的,需要进行实例化publicclass......
  • 面向对象 续
    //类的格式声明//格式[修饰符]class类名{//属性列表//构造器列表//get/set方法//其他方法}如何创建对象new类名();  用无参构造new类名(......