一、面向对象的描述

面向对象是一种现在最为流行的程序设计方法,几乎现在的所有应用都以面向对象为主了,最早的面向对象的概念实际上是由IBM提出的,在70年代的Smaltalk语言之中进行了应用,后来根据面向对象的设计思路,才形成C ,而由C 产生了Java这门面向对象的编程语言。

但是在面向对象设计之前,广泛采用的是面向过程,面向过程只是针对于自己来解决问题。面向过程的操作是以程序的基本功能实现为主,实现之后就完成了,也不考虑修改的可能性,面向对象,更多的是要进行子模块化的设计,每一个模块都需要单独存在,并且可以被重复利用,所以,面向对象的开发更像是一个具备标准的开发模式。

在面向对象定义之中,也规定了一些基本的特征:

封装:保护内部的操作不被破坏。继承:在原本的基础之上继续进行扩充。多态:在一个指定的范围之内进行概念的转换。

对于面向对象的开发来讲也分为三个过程:OOA(面向对象分析)、OOD(面向对象设计)、OOP(面向对象编程)。

二、类和对象的基本概念

:是抽象的概念集合,表示的是一个共性的产物,类之中定义的是属性和行为(方法)。

对象:对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象。

三、类定义和使用

1、简单认识类

类是对一个对象进行描述的。主要描述对象具有哪些属性(外观尺寸等),哪些功能(用来干
啥)。

例如:

一个洗衣机,可以将它看作一个类别。然后属性就是这个洗衣机的品牌、长、宽、颜色等等。功能:洗衣、烘干等。

2、类的定义

在Java中定义类,使用关键字class完成。语法如下:

忽略一下报错,因为是用的中文。

class为定义类的关键字,ClassName为类的名字,{}中为类的主体。

类中包含的内容称为类的成员。属性主要是用来描述类的,称之为类的成员属性或者类成员变量。方法主要说明类具有哪些功能,称为类的成员方法。

看一个例子:定义一个学生类

采用Java语言将洗衣机类在计算机中定义完成,经过javac编译之后形成.class文件,在JVM的基础上计算机就可以识别了。
然后呢,类定义完成之后,肯定无法直接使用。如果要使用,必须依靠对象,那么由于类属于引用数据类型,所以对象的产生格式(两种格式)如下:

1、格式一:声明并实例化对象。

2、格式二:先声明对象,然后实例化对象。

引用数据类型与基本数据类型最大的不同在于:引用数据类型需要内存的分配和使用。所以,关键字new的主要功能就是分配内存空间,也就是说,只要使用引用数据类型,就要使用关键字new来分配内存空间。

3、实例化对象

当一个实例化对象产生之后,可以按照如下的方式进行类的操作:
对象.属性:表示调用类之中的属性;
对象.方法():表示调用类之中的方法。

举一个例子,来操作类:

运行结果如下:

因为我没初始化学号的原因,所以是null。

4、类的三大特性

封装

封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。也就是说用户是无需知道对象内部的细节,但可以通过该对象对外的提供的接口来访问该对象。

对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象就可以完成自己的操作。使用封装有下面几个好处:

继承

继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用继承我们能够非常方便地复用以前的代码,能够大大的提高开发的效率。

继承所描述的是“is-a”的关系,如果有两个对象A和B,若可以描述为“A是B”,则可以表示A继承B,其中B是被继承者称之为父类或者超类,A是继承者称之为子类或者派生类。

实际上继承者是被继承者的特殊化,它除了拥有被继承者的特性外,还拥有自己独有的特性。例如猫有抓老鼠、爬树等其他动物没有的特性。同时在继承关系中,继承者完全可以替换被继承者,反之则不可以,例如我们可以说猫是动物,但不能说动物是猫就是这个道理,其实对于这个我们将其称之为“向上转型”。

多态

多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。

所以对于多态我们可以总结如下:指向子类的父类引用由于向上转型了,它只能访问父类中拥有的方法和属性,而对于子类中存在而父类中不存在的方法,该引用是不能使用的,尽管是重载该方法。若子类重写了父类中的某些方法,在调用该些方法的时候,必定是使用子类中定义的这些方法(动态连接、动态调用)。

对于面向对象而言,多态分为编译时多态和运行时多态。其中编辑时多态是静态的,主要是指方法的重载,它是根据参数列表的不同来区分不同的函数,通过编辑之后会变成两个不同的函数,在运行时谈不上多态。而运行时多态是动态的,它是通过动态绑定来实现的,也就是我们所说的多态性。

到此这篇关于浅谈java类和对象的文章就介绍到这了,更多相关java类和对象内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

浅谈java类和对象的更多相关文章

  1. Swift学习小结之对象和类

  2. Swift之旅四对象和类

    Swift里并不要求类必须继承任何标准的父类,所以如果需要的话可以省略掉父类。试一试加一个NamedShape的子类Circle,有radius属性,并且在初始化器中接收该参数。除了简单存储值外,属性还可以加getter和setter。注意EquilateralTriangle类的初始化器有三步不同:设置子类定义的属性值。如果不需要计算属性值但任然要在设置了新值之前或之后运行一段代码的话,就要用到willSet和didSet。后的所有东西都会被忽略,而且整个表达式的值是nil。

  3. Swift学习—对象和类

    上个版本的Shape类缺失了一个重要的东西:通过初始化器来创建一个实例。除了简单的存储属性,属性还有getter和setter方法。对于EquilateralTriangle中的初始化器做了三件事:1.设置子类声明的属性的值2.调用父类的初始化器3.改变被父类定义的属性值。如果你不需要计算属性但是又需要在设置一个新值之后,在运行之前提供一些代码,可以用willset和didset。

  4. 类和对象

    一个属性的声明则是在类里作为常量或变量声明的,除了是在类的上下文中。构造器的生命跟函数一样,除了会创建类的实例。使用deinit来创建一个析构器,来执行对象销毁时的清理工作。子类名后加父类的名字,以冒号分隔。子类的方法可以通过标记override重载父类中的实现,而没有override的会被编译器看作是错误。例如,下面的类要保证其三角的边长等于矩形的变长。"到操作符之前类似于方法属性。

  5. Swift面向对象中类和对象的属性

    Swift中类和对象的属性分为三种:储存属性,计算属性和类属性。

  6. Swift:什么时候使用结构体和类

    发布于2015年8月14日世界上对swift持续不断的讨论话题中有一个就是什么时候使用结构体什么时候使用类。这个例子对应下面Swift的举例:和之前的打印结果一样:值类型的体验值类型不是一个新的概念,但是对于很多人来说他们觉得这是新的。很多认为“一切皆对象”的语言如Python、JavaScript等也都只有引用类型。Swift对此说“yes”,那也就意味着Array,Dictionary和String都是结构体而不是类。

  7. Swift 学习笔记 5-对象和类

    欢迎加QQ群讨论:157672725对象和类1.创建类:class+类名2.类中属性的声明和常量、变量一样,唯一的区别就是它们的上下文是类。

  8. Swift 类和结构体(八)

    }2.类和结构体的实例使用初始化方法来生成新的实例

  9. Swift快速入门之对象和类

    定义类使用类如下:可以看到,swift相比ObjC回归正常了,类是class而不是interface了。创建类的实例时,其语法跟ObjC之外的语言一致了,通过“()”里的参数对应某个构造方法。构造方法构造方法的名字都叫“init”。析构方法与构造方法对应,析构方法叫做“deinit”。并且必须先初始化了儿子的属性后才能调用爹的构造方法,这样规定是为了避免坑爹。

  10. swift - 类和结构体之定义与区别

    类和结构体结构体包括:杖举、数组、字典。}2.创建类和结构体实例:letsomeResolution=Resolution()letsomeVideoMode=VideoMode()二、值类型和引用类型在swift语言中分值类型和引用类型。前面介绍的基础类型都是值类型。如果在类对象之间发生赋值操作,就相当于该类对象被多次引用。如果使用一个引用修改类成员的值,那么其他引用对应的成员值也会发生变化。赋值方式如:值类型:lethd=Resolutionvarcinema=hdcinema.width=2048p

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部