面向对象基础知识

我们学习Java语言必须要掌握对象和类,这样的话就可以更深层次的理解JAVA这种面向对象的程序开发理念,从而更好更快地掌握JAVA的变成 思想和方法。掌握类和对象是JAVA语言变成的基础。那么,问题来了,到底什么是对象和类呢?

一:对象

关于对象的理解其实非常简单。在我们的身边,每一种事物都是一种对象,统筹一句话概括就是,对象是事物存在的实体。例如:电视、汽车、 书桌、楼房包括我们人类自身都是一种对象。对象的话又划分为两种,即静态和动态两部分。静态:顾名思义,指的就是不能动的部分。就拿我们自 身来说,每个人的你年龄、性别、身高、体重等都属于静态。而这些特征都可概括为属性,所有的对象都具备属性。动态:即具备这些属性的人可能 做出的行为和动作(微笑、哭泣、行走、奔跑等)。人类通过探讨对象的属性和观察对象的行为来了解对象。

二:类

简单概括,类是封装对象属性和行为的载体,反过来说具有相同属性和行为的一类实体被成为类。举一个简单的例子,鸟类。鸟类封装了所有鸟 的具体属性(嘴、翅膀、爪子)和具有的行为(飞行、捕食)。这样说,相信大家都能理解。说到对象,不得不重点提一下对象的三个基本特征: 封装、继承、多态。

三:封装

  • 定义:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。

  • 封装的目的:增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,特定的访问权限来使用类的成员。

  • 封装的基本要求:把所有的属性私有化,对每个属性提供get和set方法,如果有一个带参数的构造函数的话,那一定要写一个不带参数的构造函数。在 开发的时候经常要对已经编写的类进行测试,所有在有的时候还要重写toString方法,但这不是必须的。

四:继承(extends)

  • 目的:实现代码的复用。

  • 介绍:当两个类具有相同的特征(属性)和行为(方法)时,可以将相同的部分抽取出来放到一个类中作为父类,其它两个类继承这个父类。继承后子 类自动拥有了父类的属性和方法,但特别注意的是,父类的私有属性(private)和构造方法不能被继承。另外子类可以写自己特有的属性和方法,目 的 是实现功能的扩展,子类也可以复写父类的方法,即方法的重写。子类不能继承父类中访问权限private的成员变量和方法。子类可以重写父类的方 法, 命名与父类同名的成员变量。有的时候我们需要这样的需求:我们需要将某些事物尽可能地对这个世界隐藏起来,但是允许子类的成员来访问他 们。这 个时候就需要使用到protected。

  • 用法:

    • 1、找出具有共同属性和行为的对象。

    • 2、设计代表共同状态和行为的类。(父类)

    • 3、决定子类是是否需要让某项行为具有特定不同的运作方式。- - - - - -对继承的覆盖(覆写)。

    • 4、通过寻找使用共同行为的子类找出更多抽象化的机会。

    • 5、完成类的继承层次化。

五:多态

概念:同一消息可以根据发送对象的不同而采用多种不同的行为方式,根据其实际类型调用其相应的方法。

实现方式:

(1)基于继承实现的多态

基于继承的实现机制主要表现在父类和继承该父类的一个或多个子类对某些方法的重写,多个子类对同一方法的重写可以表现出不同的行为。

(2)基于借口实现的多态

继承是通过重写父类的同一方法的几个不同子类来体现的,那么就是通过实现接口,覆盖接口中同一方法中不同的类来体现的。在接口的多态 中,指向接口的引用必须是指定实现了该接口的一个类的实例程序。在运行时,根据对象引用的实际类型来执行对应的方法。继承都是单继承,只能 为 一组相关的类提供一直的服务接口,但是接口可以是多继承多实现,它能够利用一组相关或者不相关的接口进行组合与扩充,能够对外提供一致的 服 务接口。所以它相对于继承来说有更好的灵活性。

好处:程序的可扩展性及可维护性增强。

六: 总结


  1. 封装是为了对物与外界交流进行抽象。
  2. 继承是为了对物的信息进行抽象。
  3. 多态是为了对物的行为进行抽象。

说到这里,给大家稍微扩展一下关于抽象和接口一些相关信息。

(1)抽象(abstract)

  • 介绍:在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类往往用来表示我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象,我们不能把他们实例化(拿不出一个具体
    的东西),所以称之为抽象。
   例如:publicabstract
    void xuesheng ();
  • 关于抽象方法:

    • 1、抽象类中可以有抽象方法,也可以有非抽象方法。
    • 2、抽象类中可以全都是非抽象方法。
    • 3、一个抽象类中如果没有抽象方法,那么这个类不能实例化,反之如果有抽象方法,那么这个类一定是抽象类。

(2) 接口(interface)

概念:把原有的事物与功能增强,在不改变类方法的前提下,进一步进行功能扩展。

  • 接口归纳:

    • 1、在JAVA中接口是一种专门的类型,用关键字interface来定义。
    • 2.、接口中只能定义抽象方法,不能有方法体,一定是public修饰。(接口中的方法都是抽象的)
    • 3、接口中可以定义变量,但实际上是static final 修饰的变量。
    • 4、接口中不能定义静态方法。
  • 接口的定义:

public interface Interface{
   static final int i;  //接口中不能有普通数据成员,只能够有静态的不能被修改的数据成员,static表示全局,final表示不可修改,可以不用static  final 修饰,会隐式的声明为static和final
   public void xuesheng1();  //接口中的方法一定是抽象方法,所以不用abstract修饰
   public void xuesheng2();  //接口中不能赋予方法的默认行为,即不能有方法的具体实现
}
  • 抽象与接口的联系

  • 1、一个接口可以被多个类实现,一个类也可以实现多个接口。

  • 2、接口中所有定义的字段默认都是public static final的属性,写不写没有区别。

  • 3、接口中的方法都是抽象方法,并且抽象的方法默认都是public abstract修饰的。不能用其他的修饰符修饰,可以不写。

  • 4、接口中没有构造方法。

  • 5、接口不是类。尤其不能使用new来实例化一个接口。但是可以声明接口的变量,这个变量可以指向实现了此接口的子类。

总而言之,抽象类是一种功能不全的类,接口只是一个抽象方法声明和静态不能被修改的数据的集合,两者都不能被实例化。从某种意义上说,接口是一种特殊形式的抽象类,在JAVA语言中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。在许多情况下,接口确实可以代替抽象类,前提是你不需要刻意表达属性上的继承的话。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容

  • 1 面向对象No6 面向对象 OO Object Oriented 编程时以对象为单元,封装数据和逻辑,以此提...
    征程_Journey阅读 1,116评论 0 2
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,620评论 0 11
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,537评论 18 399
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,836评论 6 13
  • (一) 芒果小姐是朋友圈里出了名的高冷女神,妆容精致,事业优秀,心比天高。 能和她做朋友很出乎我的意料。 要知道聚...
    赤木与森阅读 8,777评论 103 270