JavaSE面向对象基础

本文详细探讨了面向对象编程的基础概念,包括对象、类以及它们之间的关系。强调了面向对象的三大特征——封装、继承和多态,并解释了这些特征如何增强代码的重用性、灵活性和扩展性。此外,还对比了面向对象与面向过程编程的区别,指出面向对象在易维护、易复用和易扩展方面的优势。
摘要由CSDN通过智能技术生成

这几天一直在忙着各种各样的事情,之前几天的博客一直没时间写,今天终于抽到了空闲时间对学习内容进行总结。最近一段时间在学习面向对象的基本知识点,最开始以为很简单,但随着学习的逐步深入,对这些知识点有了新的理解与认知。

1.基本概述

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

面向过程是一种自上而下的程序设计方法,主要思路专注于算法的实现。
自上而下的设计方法,设计者用一个main函数概括出整个应用需要做的事情,然后把main方法拆解成不同的步骤,对应不同的函数。
软件代码的重用性很差,即使重用,也是简单的复制和拷贝,代码数量急剧增加。而不能直接继承和应用。
面向过程的方法将数据和过程分离,使得数据的改变很可能带来代码的变化。
面向对象是一种自下而上的程序设计方法,以数据为中心,类是表现数据的单位,是划分程序的基本单位。
面向对象设计是自下而上的特性,允许开发者从问题的局部开始,在开发过程中逐步加深对系统的理解。需求变化会作用到系统开发本身,形成─种螺旋式的开发方式。

1.1面向对象是一种对现实世界理解和抽象的方法

        传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,即对象。

        面向对象的思想已经涉及到软件开发的各个方面。如面向对象的分析(OOA,Object OrientedAnalysis),面向对象的设计(oOD,Object Oriented Design)、以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)
OOP语言有3大特征:封装、继承及多态,所有这些特征与类的概念是息息相关的。
        面向对象是指一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的集合。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性
对象、类、实体之间的关系和面向对象的问题求解思维方式。

1.2对象

        对象是要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的物,还能表示抽象的规则、计划或事件。对象是一个客观存在的、唯一的实体,是一个类的动态实例拥有自己的标识、数据与行为。

现实世界中:是客观世界中的一个实体;在计算机世界中:是一个可标识的存储区域;现实世界中所有的事物都是对象。

对象的状态和行为:

        对象都具有某些特征,并展现某些行为对象的状态和行为
        对象具有状态,一个对象用数据值来描述它的状态
        对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中

对象的两个要素:
        (1)属性:用于描述对象静态特性(结构特性)的一个数据项,描述一个人可用姓名、性别、身份证号等属性
        (2)方法(也称服务)∶用于描述对象动态特性(行为特性)的一个操作系列。每个人都具有工作、学习等行为特性。

        对象将数据和施加于数据上的操作打包成一个不可分割的最基本的模块,使得仅有该类的有限个方法才可以操纵、改变这些数据。

1.3类

用Java语言对现实生活中的事物进行描述,通过类的形式来体现。

(1)类是具有共同属性和行为的对象的抽象,具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。

(2)对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象

(3)类实际上就是一种数据类型

        1>类是用于组合各个对象所共有操作和属性的一种机制。
        2>类是具有相同属性和行为的一组对象的集合
                类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性
                类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述

(4)类可以定义为数据和方法的集合,类也称为模板,因为它们提供了对象的基本框架

        一旦定义类后,就可以用这种新类来创建该类型的对象
类就是对象的模板(template )
而对象就是类的一个实例(instance)

1.4类和对象之间的关系

类是事物的描述

(1)类是Java程序的核心,它定义了对象的形状和本质,可以用类来创建对象。当使用一个类创建了一个对象时,通常说给出了这个类的一个实例

(2)类由类声明和类体构成,一般命名方法为:首字母大写,大写字母分词,例如XueSheng

class className{
    类体;
}

(3)类包含数据成员(数据、属性)和成员方法(函数)。一般建议数据成员应该是通过函数(方法)访问的

(4)对象是类的实例,就是应用中定义的某个类的变量,例如Person p=new Person(); p就是对象

(5)类是和问题域相关的具有相同属性和行为的对象的抽象;对象是该类事物的实例,在Java中通过new来创建的

2.面向对象的三大基本特征

首先面向对象的三大基本特征是:封装、继承和多态。以下只是简单总结,需要自己详细学习的哦!

2.1封装

        在面向对象程式设计方法中,封装Encapsulation是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。

        (1)封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问【反射机制】

        (2)要访问该类的代码和数据,必须通过严格的接口控制。

        (3)封装最主要的功能在于能修改自己的实现代码,而不用修改那些调用代码的程序

        (4)适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

2.1.1封装的优点

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

2.1.2 四个关键字

private只能在当前类中直接访问

protected可以在同包或者子类中直接访问

没有范围限定词,默认或者package限定词,只能在同包中直接访问

public到处可见

2.2继承

        继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

        继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。

        继承是is-a的相互关系。

2.2.1继承的优点

        将所有子类的共同属性放入父类,实现代码共享,避免重复,提高开发效率可以使得修改扩展继承而来的实现比较简单。

2.2.2继承的缺点

        父类变,子类就必须变,继承破坏了封装,对于父类而言,它的实现细节对与子类来说都是透明的继承是一种强耦合关系。

##特殊关键字

包package

        包是类或接口的容器,是一个用于避免命名冲突的名空间,是一个逻辑命名的概念,与具体的物理位置无关。在具体的实现中,包名称经常和目录名称对应。包是类的组织方式,提供名空间和访问控制·类似于文件系统的组织

语法: package包名称;

(1)声明包要求是源代码文件的第一个语句。包定义之前可以添加注释信息
(2)程序中最多只能有一条package语句,没有包定义的源代码文件成为默认包中的一部分

//默认包中的类可以访问其他命名包或者只能同包访问,其他包不能访问默认包中的类
public class A1{
    public void cc(){
        System.out.println();
    }
}

 (3)程序中如果有package语句,该语句必须是第一条语句(前面只能有注释或空行)

2.3多态性

(下一节将详细总结学习)

3.面向对象和面向过程的区别

面向过程:

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

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

面向对象:

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

缺点:性能比面向过程低

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值