java面向对象包含什么意思(Java中的“面向对象”是什么意思)
大家好,今天来为大家分享java面向对象包含什么意思的一些知识点,和Java中的“面向对象”是什么意思的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
介绍一下java的面向对象
1、面向对象
面向对象(Object Oriented)是一种新兴的程序设计方法,或者是一种新的程序设计规范(paradigm),其基本思想是使用对象、类、继承、封装、多态等基本概念来进行程序设计。从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式。
2、对象
对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。
类的实例化可生成对象,一个对象的生命周期包括三个阶段:生成、使用、消除。
当不存在对一个对象的引用时,该对象成为一个无用对象。Java的垃圾收集器自动扫描对象的动态内存区,把没有引用的对象作为垃圾收集起来并释放。当系统内存用尽或调用System.gc()要求垃圾回收时,垃圾回收线程与系统同步运行。
3、类
类是具有相同属性和方法的一组对象的集合,它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和方法两个主要部分。在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性和方法两个主要部分。
Java中的类实现包括两个部分:类声明和类体。
类声明
其中,修饰符public,abstract,final说明了类的属性,className为类名,superclassName为类的父类的名字,interfaceNameList为类所实现的接口列表。
类体
成员变量限定词的含义:
static:静态变量(类变量)
final:常量;transient:暂时性变量,用于对象存档,用于对象的串行化
volatile:贡献变量,用于并发线程的共享
方法的实现也包括两部分内容:方法声明和方法体。
方法声明
方法声明中的限定词的含义:
static:类方法,可通过类名直接调用
abstract:抽象方法,没有方法体
final:方法不能被重写
native:集成其它语言的代码
synchronized:控制多个并发线程的访问
方法声明包括方法名、返回类型和外部参数。其中参数的类型可以是简单数据类型,也可以是复合数据类型(又称引用数据类型)。
对于简单数据类型来说,java实现的是值传递,方法接收参数的值,但不能改变这些参数的值。如果要改变参数的值,则用引用数据类型,因为引用数据类型传递给方法的是数据在内存中的地址,方法中对数据的操作可以改变数据的值。
方法体
方法体是对方法的实现,它包括局部变量的声明以及所有合法的Java指令。方法体中声明的局部变量的作用域在该方法内部。若局部变量与类的成员变量同名,则类的成员变量被隐藏。
为了区别参数和类的成员变量,我们必须使用this。this用在一个方法中引用当前对象,它的值是调用该方法的对象。返回值须与返回类型一致,或者完全相同,或是其子类。当返回类型是接口时,返回值必须实现该接口。
构造方法
构造方法是一个特殊的方法。Java中的每个类都有构造方法,用来初始化该类的一个对象。
构造方法具有和类名相同的名称,而且不返回任何数据类型。
重载经常用于构造方法。
构造方法只能由new运算符调用
4、面向对象的基本特性
封装
封装性就是尽可能的隐藏对象内部细节,对外形成一道边界,只保留有限的接口和方法与外界进行交互。封装的原则是使对象以外的部分不能随意的访问和操作对象的内部属性,从而避免了外界对对象内部属性的破坏。
可以通过对类的成员设置一定的访问权限,实现类中成员的信息隐藏。
private:类中限定为private的成员,只能被这个类本身访问。如果一个类的构造方法声明为private,则其它类不能生成该类的一个实例。
default:类中不加任何访问权限限定的成员属于缺省的(default)访问状态,可以被这个类本身和同一个包中的类所访问。
protected:类中限定为protected的成员,可以被这个类本身、它的子类(包括同一个包中以及不同包中的子类)和同一个包中的所有其他的类访问。
public:类中限定为public的成员,可以被所有的类访问。
继承
子类的对象拥有父类的全部属性与方法,称作子类对父类的继承。
Java中父类可以拥有多个子类,但是子类只能继承一个父类,称为单继承。
继承实现了代码的复用。
Java中所有的类都是通过直接或间接地继承java.lang.Object类得到的。
子类不能继承父类中访问权限为private的成员变量和方法。
子类可以重写父类的方法,即命名与父类同名的成员变量。
Java中通过super来实现对父类成员的访问,super用来引用当前对象的父类。super的使用有三种情况:
访问父类被隐藏的成员变量,如:super.variable;
调用父类中被重写的方法,如:super.Method([paramlist]),super()调用父类构造方法;
调用父类的构造函数,如:super([paramlist]);
多态
对象的多态性是指在父类中定义的属性或方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或方法在父类及其各个子类中具有不同的语义。例如:"几何图形"的"绘图"方法,"椭圆"和"多边形"都是"几何图"的子类,其"绘图"方法功能不同。
Java的多态性体现在两个方面:由方法重载实现的静态多态性(编译时多态)和方法重写实现的动态多态性(运行时多态)。
编译时多态:在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法。
运行时多态:由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。
重载(Overloading)
方法重载是让类以统一的方式处理不同数据类型的手段。
一个类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法。
返回值类型可以相同也可以不相同,无法以返回型别作为重载函数的区分标准。
重写(Overriding)
子类对父类的方法进行重新编写。如果在子类中的方法与其父类有相同的的方法名、返回类型和参数表,我们说该方法被重写(Overriding)。
如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。
子类函数的访问修饰权限不能低于父类的。
Java中的“面向对象”是什么意思
面对对象就是:
把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。程序流程由用户在使用中决定。
对象即为人对各种具体物体抽象后的一个概念,人们每天都要接触各种各样的对象,如手机就是一个对象。
在面向对象的编程方式中,对象拥有多种特性,如手机有高度、宽度、厚度、颜色、重量等特性,这些特性被称为对象的属性。对象还有很多功能,如手机可以听音乐、打电话、发信息、看电影等工作功能,这些功能被称为对象的方法,实际上这些方法是一种函数。而对象又不是孤立的,是有父子关系的,如手机属于电子产品,电子产品属于物体等,这种父子关系称为对象的继承性。在编程中,把所有的问题看做对象,以人的思维方式解决。这种方式非常人性化,对象实际上就是一组数据的集合,并且数据都已经命名。这些数据根据就是对象的属性,可以被程序访问。对象还包括很多函数,这些函数被称为对象的方法,也可以被程序访问。不过在外部访问对象内的属性或方法,必须先引用对象,然后用点号访问对象的属性和方法
面向过程就是:
自顶向下顺序执行,逐步求精;其程序结构是按功能划分为若干个基本模块,这些模块形成一个树状结构;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。程序流程在写程序时就已决定。
Java中面向对象到底是什么意思求解,谢谢。
Java面向对象思想和三大特性
面向对象:
1、面向对象
面向对象是一种程序设计思想,计算机程序的设计实质上就是将现实中的一些事物的特征抽离出来描述成一些计算机事件的过程,这种抽象的过程中,我们把具体的事物封装成一个一个的整体进行描述,使被描述的对象具备一些系统性、整体性的的行为和特征,我们把这种设计思想称为面向对象。
2、面向对象与面向过程
2.1、面向过程是早期的程序语言设计思想,该思想强调事物的行为细节,即程序的设计不需要封装成一个个的整体,而是将整个程序描述成一个行为,所有行为细节都按照固定方式一步一步的执行,执行程序就是执行某一行为的过程。
2.2、面向对象和面向过程都是一种思想,面向对象是相对于面向过程而言的,
面向过程强调的是具体的功能行为,而面向对象将功能封装进对象,强调具备了功能的对象,面向对象是基于面向过程的,但面向对象思想更接近于现实场景。
三大特性:
1、封装
1.1、封装是指:隐藏对象的属性和实现细节,仅对外提供公共访问方式
1.2、封装的好处:
(1)将外界的变化隔离,使程序具备独立、安全和稳定性。
(2)便于设计者使用,提高代码的复用性
1.3、封装的原则
(1)将不需要对外提供的内容都隐藏起来
(2)把实现细节隐藏,提供可以对其进行访问公共的方式
1.4、封装的方式
将某一功能、属性抽离出来,独立写成单独的方法或类
设置访问权限
(1)设置访问权限可以限定该功能或属性可以被特定的访问者访问,保证了程序的安全性和功能的稳定性。
(2)java对类和类中成员都定义了特定的访问修饰符
类:public(公共的)、default(默认的,不写就默认是它)
类中成员:public、protected、default(默认的)、private
注:类的访问修饰符可以不写(默认的),也可以写public(公共的),一个java文件中只能有一个被public修饰的类,且被public修饰的类类名必须要跟文件名一致(包括大小写一致),否则编译会出错,为了方便阅读,类名的命名规范是单词的首字母大写,多个单词组成的类名每个单词的首字母都大写
2、继承
2.1、继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的功能,或者说将事物的共性的功能和属性抽取出来定义成一个父类,让后来具有更多样化实现的子类继承父类。
2.2、继承的作用:
(1)父类具备的方法子类可以直接继承过来,不用重新书写,提高了代码的复用性
(2)让类与类之间产生关系,有了关系才有多态的实现
(3)Java中只支持单继承,不支持多继承,因为多继承存在安全隐患(当多个父类存在同个功能时,子类不确定要运行哪一个),Java支持多层继承,即父类还可以继承其他类,java用另一种机制解决单继承的局限性,即多实现
2.3、对继承体系的使用
(1)想要使用体系,应该先查阅父类,因为父类定义了该体系的共性功能,了解了父类的功能,就基本可以使用该体系的功能了
(2)在具体调用时,要创建子类的对象,因为有可能当父类是抽象类时父类不能创建对象,而且子类具备更丰富、更具体的功能实现
2.4继承的特点
2.4.1覆盖(重写)
2.4.1.1如果子父类中的成员一致时,子类成员会覆盖父类成员
2.4.1.2当子类继承父类时,沿袭父类的功能到子类中,但子类对该功能的实现细节不一致,子类可以保留父类对该功能的定义,重写功能的内容
2.4.1.3覆盖与重载:重载只看参数列表,其他一致参数列表不一致为重载,而重写子父类的参数必须要一致
2.4.2this与super
this表示当前对象的引用,super表示当前对象父类的引用
2.5子父类中的构造函数
2.5.1构造函数不能重写
2.5.1.1构造函数第一行有一条隐式的语句super()/this()
2.5.1.2在对子类对象进行初始化时,父类构造函数也会运行,因为子类中的构造函数默认第一行有一条隐式的super()语句,这样方便子类构造时先获取到父类的共性属性
2.5.1.3super()一定要定义在子类构造函数的第一行,当没有默认的空参数构造函数,要手动指定
2.6、注意事项:
2.6.1千万别为了获取其他类中的功能而继承,必须是类与类间有所属关系才可以继承。
2.6.2子类覆盖父类时必须保证子类权限大于等于父类,才可以覆盖,否则编译失败
2.6.3子类静态成员只能覆盖父类静态成员
2.7final关键字
2.7.1final关键字可以修饰类、函数和变量
2.7.2被final修饰的类不可以被继承(继承打破了封装性)
2.7.3被final修饰的方法不可以被复写
2.7.4被final修饰的变量只能被赋值一次,既可以修饰成员变量,也可以修饰
2.8Object类
2.8.1java中有一个特殊的类,Object类,它是所有对象的超类(根类),Object类中定义了所有对象的共性成员
2.8.2Object类中的方法
equals()比较两个对象是否相同
toString()返回该对象的字符串表示形式
getClass()获取该对象对应的字节码文件对象
hasCode()获取该对象的哈希码值
2.9类间的体系关系
继承、聚集(聚合)、组合
2.9.1继承:
指的是一个类继承另外的一个类的功能,并增加它自己的新功能或改写旧有功能的具体实现,继承是类与类之间最常见的关系。
2.9.2聚合:
指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。例如足球队中的足球队员就是聚合关系。
2.9.3组合:
也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。例如人的各个身体器官之间的关系。
3、多态
3.1、多态的定义;某一类事物具备的多种表现形态(猫、狗和动物)
3.2、java中多态的表现形式
父类的引用指向自己的子类对象
父类的引用接收自己的子类对象
3.3、多态的前提
必须是类与类之间有关系,要么继承,要么实现
子父类间的成员存在覆盖
3.4、多态的好处与缺陷
好处是提高了程序的扩展性,缺陷是只能使用父类的引用访问父类的方法,无法访问子类的特有方法。
3.5、多态的应用
类型转换
向上转型,自然转型
向下转型,强制父类引用向下转型
3.6、特点
(1)多态中成员函数的特点
编译时看引用变量所属的类中是否有方法
运行时看对象所属类的方法
(2)多态中成员变量的特点
无论编译或运行时都参看右边
多态中静态成员函数的特点
编译或运行时都参看左边
3.7、多态的扩展示例
数据库操作(各种数据库):定义数据库的父类型,由哪类型的数据库调用就由该子类实现其具体操作内容。
我有一个微信公众号,每天都会分享一些Java相关的干货文章,还有海量学习资源。
如果你喜欢我的分享,可以用微信搜索“Java团长”或者“javatuanzhang”关注。
好了,文章到此结束,希望可以帮助到大家。