面向对象的基本概念

这里先介绍面向对象程序设计的一些关键概念,并开始使用类,你需要学习一些术语,我们尽量用比较浅显的语言来介绍,因为这些内容都比较重要,所以希望大家好好好理解。

一、什么是对象和面向对象的编程。

对象就是存在的具体实体,具有明确定义的状态和行为,是面向对象编程的核心,用来描述现实世界中的实体,为计算机应用程序提供实体基础,也是完成特定任务一个封装。这样描述对象却是有点罗嗦。因为与传统的C语言不通,C语言是过程语言,而java语言是面向对象的语言,所以对象是java语言的核心。

那到底什么是对象,能举个例子吗?其实在我们生活中,什么都可以抽象成为对象,比如你有一辆汽车,这辆车就是对象了,这个对象(汽车),它有颜色,牌子,有产地等等,这些我们也可以称为是它的属性,它也能开动,要维修等等这些操作,我们成为是它的行为。这就是对象了。

在面向对象编程中(简称:OOP),现实世界的所有事物全都被视为对象。OOP的目标是在计算机程序中,模拟现实世界中的概念,我们可以借助对象的描述就能够在计算机程序中用类似的实体模拟现实世界中的实体。同时OOP也是设计和实现软件系统的方法。

二、对象和类

类是具有相同属性和行为的一组对象的集合。类是用于组合各个对象所共有操作和属性的一种机制。

对象和类有什么关系呢!我们可以举个例子来回答一下。比如现在有一个收银员叫张小芳的。那么我们可以把他抽象成为一个对象——收银员对象。

这个对象有以下的一些资料:

姓名:张小芳

职衔:收银员

年龄:28

体重:60千克

操作:

收款

打印帐单

当然一个超市里面肯定不止一个收银员,可能收银员小明、小芳等等。这些都是收银员对象,或者称之为实例,而且所有的收银员都有姓名、职衔、年龄、体重等属性;收款和打印帐单等行为。我们通过对收银员对象进行抽象,就可以得到一个收银员类(class),这个类拥有姓名、职衔、年龄、体重等属性;收款和打印帐单等行为。

所以我们得出:类是对象的原型,所有属于同一个类的对象都具有相同的属性和行为,我们抽象了类之后,我们又可以用类定义实体。类是概念模型,对象是真实的模型。

三、属性和方法

类是java的基本单位,类一般包括属性和方法。

属性:事物的特性在类中表示为变量,每个对象的每个属性都拥有其特有的值,属性名称由类的所有实例共享,在类中表示对象或实体拥有的特性时称为属性,比如我们上面所说的收银员类就是有有姓名、职衔、年龄、体重等属性,属性一般使用名词描述。

方法:操作的实际实现方法指定操作对象数据的方式如何执行所请求的操作的规范在得到操作请求时指定如何做的算法对象执行的操作称为方法。比如我们上面所说的收银员类就是有收款和打印帐单等方法,属性一般使用动词描述。

四、面向对象思想

因为面向对象思想简单概括起来就是三个:封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。

封装:就是把某些内容封起来,不让别人知道。有些对象自己的属性内部实现细节是不想让其他的对象知晓的,那么我们就可以把它封装起来。这就是封装的基本概念。

继承:顾名思义,继承就是儿子对父亲的继承,在类也可以有子类和父类的。子类对父类的继承,但是继承也不是全部继承的,若子类与父类在同一包中。子类继承了父类中所有不是private的成员方法(除构造方法)及不是private的成员变量继承,有关继承的具体我们在后面的会再介绍。继承的目标主要实现重用代码,节省开发时间。

多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向父类的指针,来调用实现子类中的方法。在java中多态一般又分为方法的重写和方法的重载。

编译时的多态性:编译时的多态性是通过重载来实现的。对于非虚的成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。

运行时的多态性:运行时的多态性就是指直到系统运行时,才根据实际情况决定实现何种操作。编译时的多态性为我们提供了运行速度快的特点,而运行时的多态性则带来了高度灵活和抽象的特点。

一下让大家理解这些概念是不可能的,大家可以先简单理解和记忆一下,以后再慢慢消化。

java面向对象的基本概念的更多相关文章

  1. Java面向对象的基本概念(对象、封装、继承、多态、抽象、接口、泛型)

    对象:是一个自包含的实体,用一组可识别的特征和行为来标识. 类:具有相同的属性和功能的对象的抽象合集.(类关键字class,首字母大写). 实例:就是一个真实的对象. 实例化:创建对象的过程,关键字是 ...

  2. java 面向对象 2

    一.JAVA类的定义 JAVA里面有class关键字定义一个类,后面加上自定义的类名即可.如这里定义的person类,使用class person定义了一个person类,然后在person这个类的类 ...

  3. java面向对象总结(二)

    Java 封装 实现Java封装的步骤 java面向对象值继承 概念: 继承的格式: 类和类之间的关系: 继承的特点: 继承的优缺点 继承的好处: 继承的缺点: 继承的注意事项: 使用继承的步骤: J ...

  4. java面向对象概念1

    一.java面向对象学习的三条主线: 1.java类及类的成员:属性.方法.构造器:代码块.内部类 2.面向对象的三大特征:封装性.继承性.多态性.(抽象性) 3.其它关键字:this.super.s ...

  5. Java面向对象-面向对象编程之基本概念

    面向对象这个概念,每本书上的说法定义很多. 我自己根据我的经验,自己归档总结了下, 所谓面向对象,就是 以基于对象的思维去分析和解决问题,万物皆对象: 面向对象经常和面向过程放一起讨论: 这里举例, ...

  6. 087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点

    087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点 本文知识点:封装的概念和特点 说明:因为时间紧张,本人写博客过程中只是对 ...

  7. 谈谈Java面向对象的三大特性

    Java面向对象的三大特性就是指封装.继承.多态了. 一.封装: 概念:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. (举例:笔记本电脑就是一个封装体,Java语言中最小的封装体就是函数 ...

  8. java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final

    一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...

  9. JAVA课程实验报告 实验二 Java面向对象程序设计

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1353  姓名:韩玉琪  学号:20135317 成绩:             指导教师:娄嘉 ...

随机推荐

  1. Hashtable,HashMap和ConcurrentHashMap的原理及区别

    一.原理 Hashtable 底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashM ...

  2. linux系统启动报错:[contains a file system with errors, check forced]的解决方法参考

    1.解决参考一Press enter for maintenance(or type Control-D to continue):/dev/sda3 contains a file system w ...

  3. 数据结构篇——字典树(trie树)

    引入 现在有这样一个问题, 给出\(n\)个单词和\(m\)个询问,每次询问一个单词,回答这个单词是否在单词表中出现过. 好像还行,用 map<string,bool> ,几行就完事了. ...

  4. Codeforces Good Bye 2016 E. New Year and Old Subsequence

    传送门 题意: 给出一个长度为\(n\)的串,现在有\(q\)个询问,每个询问是一个区间\([l,r]\),要回答在区间\([l,r]\)中,最少需要删多少个数,满足区间中包含\(2017\)的子序列 ...

  5. 学习:CC断点

    断点介绍: shark恒老师说有四种说法,但是其实都是相同的 第一个读法:普通断点 第二个读法:F2断点 第三个读法:INT3断点( int3其实就是汇编指令 ) 第四个读法:CC断点 (CC其实就是 ...

  6. 2017-2018 ACM-ICPC Southeastern European Regional Programming Contest (SEERC 2017)

    2017-2018 ACM-ICPC Southeastern European Regional Programming Contest (SEERC 2017) 全靠 wxh的博客 补完这套.wx ...

  7. LeetCode 1216. Valid Palindrome III

    原题链接在这里:https://leetcode.com/problems/valid-palindrome-iii/ 题目: Given a string s and an integer k, f ...

  8. django @login_required登录限制(2)-返回登陆成功后的页面

    本次要实现的功能是,访问未登录的视图函数,需要先跳转到登录页面,登陆成功在跳转回来. 之前在网上找了很多资料,都没有找到解决方案. 跳转到登录页面很好弄,就是登陆成功跳转回来出了问题,原因是登录后的p ...

  9. ESA2GJK1DH1K基础篇: 阿里云物联网平台: 测试MQTT连接阿里云物联网平台

    前言 这节看一下在阿里云上实现MQTT通信是个怎样的流程 看了很多网上的教程,感觉讲的迷迷糊糊.... 其实感觉他们是对MQTT不够透彻,所以写的文章就是个比着葫芦画瓢的感觉 在我面前这东西就是玩具. ...

  10. 谈谈你对arguments的了解

    arguments:函数的实参副本,它是一个类数组. 使用场景:只能在函数内调用,严格模式下不能用. 函数的形参个数:fn.length 函数的实参个数:arguments.length argume ...