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

面向对象

时间:2023-08-20 16:27:01浏览次数:38  
标签:子类 多态 面向对象 引用 父类 方法

面向对象概述

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

优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资 源;比如单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发,性能是最 重要的因素。

缺点:没有面向对象易维护、易复用、易扩展

面向对象:

优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性, 可以设计出低耦合的系统,使系统更加灵活、更加易于维护

缺点:性能比面向过程低

面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步 一步的实现。

面向对象是模型化的,你只需抽象出一个类,这是一个封闭的盒子,在这里你拥 有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必去一步一 步的实现,至于这个功能是如何实现的,管我们什么事?我们会用就可以了。

面向对象的底层其实还是面向过程,把面向过程抽象成类,然后封装,方便我们 使用的就是面向对象了。

面向对象三大特性 面向对象的特征有哪些方面 面向对象的特征主要有以下几个方面:

抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行 为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是 什么。

封装 :封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如 果属性不想被外界访问,我们大可不必提供方法给外界访问。但是如果一个类没 有提供给外界访问的方法,那么这个类也没有什么意义了。

多态:

所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出 的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到 底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的 方法,必须在由程序运行期间才能决定。

在 Java 中有两种形式可以实现多态:继承(多个子类对同一方法的重写)和接 口(实现接口并覆盖接口中同一方法)。

其中 Java 面向对象编程三大特性:封装 继承 多态 封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便 于使用,提高复用性和安全性。

继承:继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以 增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通 过使用继承可以提高代码复用性。继承是多态的前提。

关于继承如下 3 点请记住:

1. 子类拥有父类非 private 的属性和方法。

2. 子类可以拥有自己属性和方法,即子类可以对父类进行扩展。

3. 子类可以用自己的方式实现父类的方法。

多态性:父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提 高了程序的拓展性。

在 Java 中有两种形式可以实现多态:继承(多个子类对同一方法的重写)和接 口(实现接口并覆盖接口中同一方法)。

方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写 (override)实现的是运行时的多态性(也称为后绑定)。

一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是 哪个类中实现的方法,必须在由程序运行期间才能决定。运行时的多态是面向对 象最精髓的东西,要实现多态需要做两件事:

• 方法重写(子类继承父类并重写父类中已有的或抽象的方法);

• 对象造型(用父类型引用子类型对象,这样同样的引用调用同样的方法就 会根据子类对象的不同而表现出不同的行为)。

什么是多态机制?

Java 语言是如何实现多态的? 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出 的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒 底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的 方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这 样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而 导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时 所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。 多态分为编译时多态和运行时多态。其中编辑时多态是静态的,主要是指方法的 重载,它是根据参数列表的不同来区分不同的函数,通过编辑之后会变成两个不 同的函数,在运行时谈不上多态。而运行时多态是动态的,它是通过动态绑定来 实现的,也就是我们所说的多态性。

多态的实现

Java 实现多态有三个必要条件:继承、重写、向上转型。

继承:在多态中必须存在有继承关系的子类和父类。

重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的 方法。

向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具 备技能调用父类的方法和子类的方法。 只有满足了上述三个条件,我们才能够在同一个继承结构中使用统一的逻辑实现 代码处理不同的对象,从而达到执行不同的行为。 对于 Java 而言,它多态的实现机制遵循一个原则:当超类对象引用变量引用子 类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法, 但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。

面向对象五大基本原则是什么

• 单一职责原则 SRP(Single Responsibility Principle) 类的功能要单一,不能包罗万象,跟杂货铺似的。

• 开放封闭原则 OCP(Open-Close Principle) 一个模块对于拓展是开放的,对于修改是封闭的,想要增加功能热烈欢 迎,想要修改,哼,一万个不乐意。

• 里式替换原则 LSP(the Liskov Substitution Principle LSP) 子类可以替换父类出现在父类能够出现的任何地方。比如你能代表你爸去 你姥姥家干活。哈哈~~

• 依赖倒置原则 DIP(the Dependency Inversion Principle DIP) 高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象 不应该依赖于具体实现,具体实现应该依赖于抽象。就是你出国要说你是 中国人,而不能说你是哪个村子的。比如说中国人是抽象的,下面有具体 的 xx 省,xx 市,xx 县。你要依赖的抽象是中国人,而不是你是 xx 村 的。

• 接口分离原则 ISP(the Interface Segregation Principle ISP) 设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好。就 比如一个手机拥有打电话,看视频,玩游戏等功能,把这几个功能拆分成 不同的接口,比在一个接口里要好的多。

标签:子类,多态,面向对象,引用,父类,方法
From: https://www.cnblogs.com/szza/p/17644142.html

相关文章

  • 面向对象--继承
    继承概述在面向对象里面,继承是对类进一步抽象的过程。当多个类中存在相同属性和行为时,将这些相同属性和行为抽取到单独一个类中,这个类就是父类,子类无需再定义这些属性和行为,只要继承父类即可。其中,多个类可以称为子类,单独那一个类称为父类、超类(superclass)或者*基类*。继承概念......
  • 面向对象编程
    面向对象编程多[多种]态[状态]基本介绍方法或对象具有多种状态,是面向对象的第三大特征多态的具体体现方法的多态对象的多态/*1.一个对象的编译类型和运行类型可以不一致2.编译类型在定义对象时,就确定了,不能改变3.运行类型是可以变化的4.编译类型看定义时=号的左......
  • 面向对象高级01
    面向对象高级一、类变量和类方法1.1类变量和类方法1.1.1static变量是对象共享的,不管static变量在哪里1.1.2共识:(1)static变量是同一个类的对象共享。(2)static变量在类加载的时候就已经生成了1.1.3什么是类变量?类变量也叫静态变量,是该类的所有对象共享的变量,任何一个该类的......
  • OOP:面向对象
    OOP:面向对象思想80年代,百花争名,OOP(面向对象编程)OOA(面向对象分析)OOD(面向对象设计)程序即现实:模拟现实世界万事万物皆对象核心:类和对象类是对象的抽象,对象是类的具体类:抽象的,模板,概念,是一些具体共同特征和行为的一类的定义对象:实际存在的,通过类来创建类的组成:属性(......
  • C#面向对象的三大特征
    一、封装封装就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的类或者对象隐藏信息。简单地说,一个类就是一个封装了数据及操作这些数据的代码的逻辑实体。目的是增强程序的安全性、简化编程、代码的重用性更高,让修改或扩展更方便。......
  • 面向对象开发的封装
    封装被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中"。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。抽象和封装是面向对象程序设计的相关特性。抽象允许相关信息可视化,封装则使程序员实现所需级别的抽象。封装使用 访问修饰符 来实现。一个 访问......
  • 20-面向对象编程-多态
    面向对象编程有三大特征:封装、继承和多态 访问修饰符可以控制属性的访问范围public:表示公共访问级别,可以被任何类访问。protected:表示受保护访问级别,可以被类本身、子类和同一包中的类访问。default(缺省):表示默认访问级别,即如果没有使用访问修饰符,默认是此级别,可以被同一包......
  • 面向对象——封装
    什么是封装    面向对象编程是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。封装被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的方式。适当的封装可以让代码更容易理解与维护,也加强了代码......
  • 19-面向对象-方法重写(Override)
    基本介绍重写(Override):是指子类中有一个方法和父类的某个方法的名称、返回类型、参数完全一样,那么我们就说子类的这个方法覆盖了父类的方法即在Java中,子类在重写父类的方法时,必须与父类方法的修饰符、返回值类型、方法名(参数列表)要完全一致publicclassOverride01{pu......
  • 第十节 面向对象综合训练(拓展)
    练习一:​ 自行完成切换美女图片的功能。需求如下:需求详解:1,在功能选项中添加更换图片,在更换图片里面再添加美女,动物,运动。​代码中功能是JMenu,更换图片也是JMenu,美女,动物,运动是三个JMenuItem​代码如下://创建菜单并添加到界面当中//1.创建菜单JMenuBar的对象J......