面向对象

面向对象,面向对象的优点 面向对象,面向对象的优点 什么是面向对象呢,百度百科的词条解释是这样的 面向对象(Object Oriented)是软件开发方法,一种编程范式。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。 面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物 阅读详情

面向对象

​ 利用 物以类聚、分类的思维模式。 对分类进行单独思考、再细化(面向过程->线性思维)。

​ 本质:以类的方式组织代码,以对象的组织封装数据

方法回顾和加深

​ 回顾的简单案例:

/**
     * 修饰符 返回值类型 方法名(...){
     *     //方法体
     *     return 返回值;
     * }
     */
    public int max(int i,int j){
        return i>j ? i : j;
    }

Student类

public class Student {

    public void show(){
        System.out.println("I am Studnet");
    }
}

实例化对象

对象类型 对象名 = 对象值

eg:

public static void main(String[] args) {
        //对象类型 对象名 = 对象值
        Student student = new Student();
    }

调用对象的相关方法

对象名.对象方法 ()

eg:

student.show();//I am Studnet

注:

​ 1.静态方法可使用非静态方法、但非静态方法不可调用静态方法

​ 【静态方法会直接生成、而非静态方法只有类实例化后才生成】

​ 2.基本类型做形参时为值传递、引用类型做形参时为引用传递

对象的创建

​ 对象只拥有 属性 和 方法

public class Student {

    //属性:字段
    String name;
    int age;

    //方法
    public void show(){
        System.out.println("I am Studnet");
    }
}

​ 创建对象和调用相关数据

​ 每一个new的对象都是单独的分配区间,即实例化后的对象是不同的

//main方法
    public static void main(String[] args) {
        Student Tom = new Student();
        Student Jerry = new Student();

        Tom.name="Tom";
        Jerry.name="Jerry";

        System.out.println(Tom.name); //Tom
        System.out.println(Jerry.name); //Jerry
    }

构造器

​ 用于初始化类

​ 注:

​ 构造器必须和类名相同

​ 没有返回值

所以当new实例化对象时,本质就是在调用构造器

Student类 (带构造器)

public class Student {

    //属性:字段
    String name;
    int age;

    //无参构造
    public Student(){

    }

    //有参构造、可对数据进行一定的加工处理
    public Student(String str,int num){
        this.name=str; //this.xxx  表示当前对象的xxx
        this.age = num;
    }
}

​

面向对象三大特性

封装

​ 高内聚、低耦合 =>类的内部数据操作由程序员万层,不允许外部干涉。仅暴露一小部分内容给外部使用

​ 通常采用 private 来表明私有

​ 这些内容 属性,get,set 应当都私有

eg: Student 封装样式

public class Student {

    //属性:字段
    private String name;
    private int age;

    private void show(){
        System.out.println("I am student");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

作用:

​ 提高安全性,保护数据

​ 隐藏代码实现细节

​ 统一接口

​ 增加可维护性

继承

​ 对某一批类的抽象

​ 继承后,子类和父类之间 具有 xxx" is a "xxx 的关系

注:

​ Java 只有 单继承 !!!

语法形式:

class 子类 extends 父类

特点:

​ 子类可拥有父类的所有属性、方法

​ Object 类 是 所有类的父类

​

eg:

//父类 人
class Person{
    String name;

}

//子类 教师类
class  Teacher extends Person{

}


//子类 学生类
class Student extends Person{


    public void show(){
        System.out.println(this.name);
    }
}

其中 父类的相关内容 由 修饰符来表明 权限

​ public > protected > default > private [不被子类所继承]

super 关键字

​ super 通常用于 子类 调用 父类 内容。

注:

​ 构方都会默认super(),即调用父类的无参构造。

​ 其中 若要super()必须是第一行

class Student extends Person{
    private String name = "Z";

    public void show(String name){
        System.out.println(name); //name
        System.out.println(this.name); // Z
        System.out.println(super.name); //F
    }
}
方法重写

​ 子类继承父类后,对父类方法的重新设计

​

​ 注:

​ 方法名相同

​ 参数列表相同

​ 修饰符可以扩大

​ 异常可被缩小

//Test类
public class Test {

    //main方法
    public static void main(String[] args) {

        Person p =new Person();
        Student s = new Student();

        p.show();
        s.show();



    }


}

//父类 人
class Person{

    public void show(){
        System.out.println("Person");
    }

}


//子类 学生类
class Student extends Person{

    @Override //重写
    public void show(){
        System.out.println("Student");
    }
}
多态

​ 父类的引用指向子类

​ 用于动态编译、增加 可拓展性

语法形式:

父类 对象名 = new 子类();

注:

​ 父类指向子类时,不可调用子类独有的方法

​ 子类可调用本身或父类的方法

相关关键字

​ instanceof 判断是否为是否有继承关系,即是否相似。 以便于后续的类型转换

​ 子类转换父类,向上转型。

​ 父类强转子类,会丢失一些方法。向下转型。

抽象类

​ abstract 修饰符来修饰。

​ 修饰方法则方法->抽象方法,修饰类->抽象类

​ 注:

​ 抽象类,不可被new实例化对象,仅可被子类继承

​ 抽象方法,只有声明,没有方法实现,仅可被子类实现。

​

​ 子类继承抽象类后,必须实现相关抽象方法,否则需要声明为抽象类

//abstract 抽象类
abstract class AbstractClass{

    //约束方法规范 -> 交予子类实现
    public abstract void doSomething();
}


class AbstractImpl extends AbstractClass{

    //必须实现相关抽象方法
    @Override
    public void doSomething() {

    }
}

接口

​ 接口就是一组规范。

定义接口的形式

interface xxx{}

类 实现接口的形式:

class xxx implements xxx,xxx,xxx{}

注:

​ 接口中的所有定义 都默认带 public abstract

​ 接口可被多实现、即 一个类可以实现多个接口

​ 接口不可被实例化

interface InterfaceDemo{

    //接口中的所有定义 都默认带 public abstract
    void run();
    
    int max(int i,int j);
}

class InterfaceImpl implements InterfaceDemo{
    
    public void run(){
        System.out.println("run....");
    }

    @Override
    public int max(int i, int j) {
        return i>j?i:j;
    }
}

内部类

​ 在一个类的内部再定义一个类。

成员内部类

class Outer{

    private int id=1;
    public void outershow(){
        System.out.println("这是外部类的方法");
    }

    public class Inner{

        public void innershow(){
            System.out.println("这是内部类的方法");
        }

        /*
            内部类访问外部类的私有内容
         */
        public  void getOuterId(){
            System.out.println(id);
        }
    }
}

public class Test {

    //main方法
    public static void main(String[] args) {

        Outer outer = new Outer();

        //通过外部类来实例化内部类
        Outer.Inner inner = outer.new Inner();

        inner.innershow(); //这是内部类的方法

        inner.getOuterId(); // 1

    }

}

静态内部类

当static后 就不可访问外部内的相关内容

class Outer{

    private int id=1;
    public void outershow(){
        System.out.println("这是外部类的方法");
    }

    public static class Inner{

        public void innershow(){
            System.out.println("这是内部类的方法");
        }
    }
}

局部内部类

​ 一个java中,可以有多个class类,但仅有一个public class类

​ 该类既可以存于类中,又可以存在于方法这个,但作用域仅作用于当前。

匿名内部类

​ 实例化类时,可以不赋予一次。

​ 但该实例化类仅进行一次,不可进行后续的操作。

public class Test {

    //main方法
    public static void main(String[] args) {

        new NoName().show(); // 我可以没有名字

    }


}

class NoName{

    public void show(){
        System.out.println("我可以没有名字");
    }
}

Python——面向对象 阅读详情

相关推荐

工业级以太网通信实战:用FPGA驱动YT8531 PHY芯片的完整避坑指南

本文是一份针对工业级以太网通信的实战指南,详细讲解了如何使用FPGA驱动YT8531 PHY芯片。内容涵盖从硬件设计(电源、时钟、复位)到MDIO接口驱动开发、PHY配置与链路管理的全流程,并重点剖析了十个常见的开发“陷阱”及其解决方案,旨在帮助工程师在复杂的工业环境中实现稳定可靠的以太网通信连接。

weixin_29191669的博客 146

什么是面向对象? 谈谈你对面向对象的理解

面试官提问:什么是面向对象? 谈谈你对面向对象的理解 面试题拆解: 这道面试题对于工作时间不是很长的Java程序员来说,出现频率是比较高的。 那么到底什么是面向对象呢?讲面向对象之前,需要先聊一下面向过程,并聊聊两者的区别。 再从面向对象的角度出发,聊聊面向对象的三大特性:封装、继承、多态。 面试题回答 下面是面试君对于这个面试题的回答,不一定全对,可具有一定的参考借鉴意义: 面试官你好,我来回答一下这个问题,对于什么是面向对象,它是一种编程思想。聊到面向对象,我们需要聊一下面向过程的编程方式

qfguan的博客 5万+

保姆级教程:用DaVinci Configurator & Developer从零搭建AUTOSAR OS(TC2xx三核实战)

本文提供了一份详细的AUTOSAR OS配置指南,使用DaVinci Configurator和Developer工具从零开始搭建Infineon TC2xx三核系统。涵盖多核配置协同逻辑、版本兼容性陷阱及验证错误的解决方案,帮助开发者在3小时内构建可运行的多核OS框架。

weixin_33940469的博客 315

什么是面向对象,为什么要面向对象

一、 面向对象,这个对象到底是什么? 这个对象不是C#中的实例,C#中我们把一个类的实例也叫做对象,这种对象严格的说应该是面向对象的编程实现(OOP)中的对象,面向对象编程,也不是面向类的实例编程。对象的定义是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。也有的定义为“一切都是对象”然而面向对象也不能简单...

weixin_33738982的博客 2075

Ubuntu 22.04蓝牙开关秒关?别慌,可能是这个Intel固件文件在搞鬼

本文深入解析Ubuntu 22.04蓝牙开关秒关问题,指出Intel固件文件缺失是常见原因,并提供详细修复方案。通过确认硬件型号、检查固件文件及智能替代方案,帮助用户快速解决蓝牙故障,提升系统稳定性。

weixin_30247307的博客 756

MCU工程迁移实战:从STM32到MSPM0L1306的完整指南

在嵌入式系统开发中,MCU工程迁移是开发者常面临的核心挑战,涉及从旧平台向新芯片的完整适配。其原理在于不同MCU在硬件架构、外设寄存器映射、时钟树及开发工具链上存在差异,迁移的本质是将应用逻辑与底层硬件实现解耦。这一过程的技术价值在于提升代码复用性、降低硬件切换成本,并确保产品能快速响应供应链或技术栈变化。典型应用场景包括产品升级换代、芯片缺货替代以及技术生态统一。本文以TI MSPM0L1306为例,详解如何通过对比清单分析、DriverLib API替换及分步调试,高效完成从STM32等平台到Arm C

weixin_27625589的博客 330

面向对象思想

第一节 面向过程和面向对象思想 1. 面向过程和面向对象的区别   面向过程和面向对象都是对软件分析、设计和开发的一种思想,它指导着人们以不同的 方式去分析、设计和开发软件。早期先有面向过程思想,随着软件规模的扩大,问题复杂性 的提高,面向过程的弊端越来越明显的显示出来,出现了面向对象思想并成为目前主流的方 式。两者都贯穿于软件分析、设计和开发各个阶段,对应面向对象就分别称为面向对象分析 (OOA...

贝西奇谈 1546

Python经常遇到导入xlwings就出错,如何解决

Python经常在导入xlwings时遇到错误。有人建议尝试重装或升级xlwings,但这些操作后仍然无法解决导入错误问题。

felix_8的博客 1740

面向对象分析、面向对象设计、面向对象编程、面向对象编程语言的基本概念

什么是面向对象编程和面向对象编程语言? 面向对象编程的英文缩写是 OOP,全称是 Object Oriented Programming 面向对象编程语言的英文缩写是 OOPL,全称是 Object Oriented Programming Language 面向对象编程 面向对象编程是一种编程范式或编程风格。它以类和对象最为组织代码的基本单元,并将封装、抽象、继承、多态四个特性作为代码设计和实现...

Angus的博客 1966

手把手教你搞定JBI投稿:从Statement of Significance到Declaration Statement的保姆级避坑指南

本文提供了一份详细的JBI投稿指南,重点解析Statement of Significance和Declaration of Interests的撰写技巧,帮助研究者避开常见格式陷阱。通过实战案例和检查清单,确保投稿符合JBI的学术严谨性和临床转化价值要求,提升稿件通过率。

weixin_29278805的博客 622

树莓派 RP2350B 开发环境搭建

本文介绍了树莓派RP2350B开发环境的搭建过程。

张一西的博客 287

什么是对象?为什么要面向对象?怎样才能面向对象

什么是面向对象、为什么面向对象、怎样才能面向对象、类和对象的关系

学了总是会忘...+_+ 1202

15、降维算法:原理、实现与应用

本文深入介绍了多种降维算法,包括线性方法如主成分分析(PCA)和线性判别分析(LDA),以及非线性方法如Sammon映射、t分布随机邻域嵌入(t-SNE)和自编码器。文章通过C++库Dlib和Shogun展示了这些算法的具体实现,并结合图像压缩和数据可视化等实际案例,分析了不同算法的适用场景。此外,还探讨了降维算法的选择策略、优化改进方法以及未来发展趋势,为读者提供了全面的技术理解和应用指导。

lemon的博客 115

C++面向对象:面向对象思想引入

C++学习笔记:面向对象1.从高处看面向对象2.模拟单片机流水灯2.1 用C语言常规方法实现2.2 用C语言面向对象方法实现2.3 用C++面向对象方式实现,对比第二步,再理解2.4 逐一详解面向对象的各特征,并且用C++来实例讲解实现 1.从高处看面向对象 面向对象是一种编程思想,它并不是C++特有的,所有编程语言(比如汇编,C等)都可以实现面向对象。 面向对象语言就是设计语言特性时充分考虑并且原生支持面向对象特征的那些编程语言(例如Python,Java等),非面向对象语言没有原生支持面向对象,但是可以

Hundreays 701

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

如何实现面向对象

如何实现面向对象面向对象的定义面向对象的三大特征、面向对象的基础实现面向对象基本准则实例 面向对象的定义 对象是指具体的某一事物,在现实生活中能够看得见摸得着的事物。在面向对象程序设计中,对象指的是计算机系统中的某一个成分。 在面向对象程序设计中,对象包含两个含义,其中一个是数据,另一个是动作。对象是数据和动作的结构体。 面向对象是在对象这一层次。 面向对象的三大特征、面向对象的基础 封装、继承、多态 封装:在面向对象中,对数据和动作进行包装,其中的某些数据动作,可以是私有的,不能被外界访问,以此来实现对数

理想主义的花最终会盛开在浪漫主义的土壤里,我的热情永远不会熄灭在现实的平凡之中,我们终将上岸,阳光万里。 6662

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java面向对象之面向对象的理解

前言: 面向对象时Java中十分重要的一个概念,很多工作多年的程序员也很难说清楚什么是面向对象。我在这里也只是阐述一下当下我对面向对象的理解。 也就是说,我的理解并不一定是正确的,而且随着以后我对面向对象的理解的改变,这篇文章的内容也会改变。(也可能我会忘记更改) 什么是面向对象? 面向对象的本质是什么? 面向对象的本质是一种思想。 什么是思想? 思想是一个人面对问题时选择解决方法的指导原则。 比如: 要解决一个问题:赚钱。 不同人会选择不同的方法: 选择创业赚钱 ...

weixin_53713452的博客 358

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

面向对象理论

面向对象理论     理论         OO                 Objec - Oriented ,面向对象,基于对象概念,以对象为中心,以类和继承为构造机制,来认识,理解,刻画客观世界和设计,构建相应的软件系统的一门方法;本意-- 模拟人类的思维方式,使开发,维护,修改更加容易         OOA                 Object - Oriented Anal...

u013249280的博客 485

python支持面向对象设计_Python面向对象设计和面向对象编程解析

我们都知道Python是一门灵活度很高的语言,它可以面向过程,面向对象,那我们今天说说Python中的面向对象设计和面向对象编程的区别面向对象设计和面向对象编程都提到了“面向对象”, 那么首先我们要搞清楚什么是对象对象:我们可以简单的理解为我们见到的每个实际存在的事物就是一个对象,如果一个人,一座房子,一只小猫等。那么我们想想,我们怎么面向对象,那就是以对象为中心,去描述这个对象,这个对象有什么特...

weixin_39873456的博客 154

什么是面向对象_面向对象?我的对象呢?

理解面向对象大家一定注意到在面试时总是会被问一遍又一遍的同样的陈词滥调的问题,例如:你觉得五年后你自己是什么样子(你对五年后的自己有什么期待)?你认为什么是你最大的弱点?同样面试程序开发工作,面向对象也是高频考点之一。1. 什么是面向对象?1.1 面向对象的历史面向对象是一种编程范式(也叫方法论、思维方法等)。目前大部分语言都是支持多种范式的,包括面向对象这种范式。 + 1950 objects...

weixin_39927848的博客 246

面向对象【一】什么是面向对象

2. 无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果,面向对象的程序一旦开始就由对象之间的交互解决问题,即便是上帝也无法准确地预测最终结果。于是我们经常看到对战类游戏,新增一个游戏人物,在对战的过程中极容易出现阴霸的技能,一刀砍死3个人,这种情况是无法准确预知的,只有对象之间交互才能准确地知道最终的结果。 应用场景:需求经常变化的软件,一般需求的变化都集中在...

baoduan1886的博客 166

python面向对象的含义_Python之面向对象理解

面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。而面向对象的程序设计把计算机程序视为一组对象的集合,而...

weixin_39663729的博客 212

【面向对象】——重新认识面向对象

从本质上来看,面向对象是一种编程思想,是程序员解决问题的一种思维方式,也就是我们所说的编程范式。

幸运的梦之星 589

面向对象基础——初识面向对象

文章目录面向过程思想和面向对象思想面向过程思想面向对象思想类的定义和对象的产生定制对象独有的属性属性的查找顺序练习题 面向过程思想和面向对象思想 面向过程思想 ​ 面向过程不是一门技术,而是一种编程的思想。 ​ 面向过程思想的核心是“过程”二字,所谓“过程”,即为先干什么,再干什么,最后干什么,所展现的是一种机械式思维方式。我们通过下面的例子来简单认识一下: # 例1:大象放冰箱的步骤: 1. 打开冰箱门, 2. 把大象放进冰箱 3. 观赏冰箱门 # 例2:写一个简

Jakey_src的博客 444
上一篇: 数组
下一篇: 异常
code_Floyed
博客等级 码龄7年 3粉丝 56原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值