`
wujianjun12315
  • 浏览: 111896 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

面向对象的三个重要概念

 
阅读更多
    在结构化的编程中,主要是通过一系列的过程(算法)来解决问题,一旦这些过程确定就得考虑存储数据的方式,所以大师们把面向过程的程序设计概括为“程序=算法+数据结构”,所以面向过程的设计中首先考虑如何操作数据,然后在考虑数据的存储,以便于如何简单的操作数据;而在OOP(面向对象)的设计中恰恰相反,先是考虑数据结构的设计(类的设计),然后再考虑数据的操作。在面向对象的设计中主要以下概念需要理解:
1:类和对象
   在面向对象的设计中。基本上是在类的基础上设计,所有的方法的变量都被类包围。在这里有一句典型描述类和对象的话----“类是构造对象的模板和蓝图”,所以对象就是通过类的构造方法创建出来的一个实例罢了,对于对象来说,"封装"---也是一个比较重要的概念,从形式上看是将数据和行为组合在一个包中,并对对象的使用者影藏了数据的实现方式,对象中的数据即实例域,操纵数据的过程叫做方法,对于每一个特定的实例(对象)都有一组特定的实例域值,这些值的结合就是对象的当前状态,无论何时,只要向对象发送一个消息,他的状态就有可能发生变化。构造器:在编写一个类的时候如果没有编写构造器,那么系统会提供一个默认的构造器,默认构造器会把所有的变量设置默认的初始值,如boolean值为false,int值为0,String类型为空串,对象类型为null,注意在这里所说的默认的构造函数是指没有显示编写构造函数的前提下,如果在有显示的构造函数的情况下,而且也没有编写空的构造函数,那么默认的构造函数是不存在的。

2:抽象类
   从某种角度看,祖先类更加通用,人们只将它作为派生其他类的基类,而不是作为想使用的特定的实例,所以出现了抽象类,在这里讲述一个抽象类引入的实例,如果两个类同时继承于一个类,现在我们想在这两个类中实现一个公共的通用的方法,那么如果我们在父类中添加一个空实现的方法让两个继承并重写里面的实现就是了,但是我们这里有一个不用空实现的方式,就是用abstract来修饰我们的方法,而不用去空实现。所以有如下的规定:
a:包含一个或者多个抽象方法的类本身必须被申明为抽象的;
b:除了抽象方法外,抽象类还可以包含具体的数据和具体的方法,建议只将通用的方法放在超类中;
c:抽象类充当着站位的角色,他的具体实现在子类中
d:类即使不含抽象方法,也可以将类申明为抽象类;
e:抽象类不能被实例化(虽然可以写构造方法),注意:抽象类和接口不一样,抽象类也是类,他具有类的大部分特征,它有实例域和构造函数,因为继承就是继承父类的数据和方法还有父类的构造函数,但是由于抽象的特殊含义,他不能被实例化;抽象类可以实现接口也可以继承其他抽象类或者普通类。
f:可以不实现抽象类的所有抽象方法,这样的话子类也必须是抽象方法,否则就全部实现抽象方法
g:可以定义一个抽象类的对象变量,但是它只能引用非抽象子类的对象Person person = new Student()
h:由于不能构造抽象类的对象,所以抽象类的变量永远不会引用抽象类的对象,而是引用具体子类对象,如:
Person[] people = new Person[2];
people[0] = new Student(...);
people[1] = new Teacher(...);
for(Person p : people){
  System.out.println("name"+p.getName()+";描述"+p.getDescription());
}
3:接口
   在了解接口的时候,我觉得这句话很经典:接口不是类,而是对类的一组需求的描述,如果类遵从某个接口,那么就履行这项服务,在接口中有一些约定的东西:
a> 接口中的所有方法和属性都自动的属于public,所以在接口申明的时候不必提供关键字public,在这里我是这样理解的,接口定义的服务时需要类的履行的,所以需要时公开的。
b> 接口决不能含有实例域,也不能在接口中实现方法,因为接口只是类的需求的描述,所以不能实现方法。
c> 接口中不包含默认的构造方法,也不能提供构造方法,所以她是没有实例的,因为只是描述,也没有对描述这个抽象的东西来一个实例吧。
d> 接口不能继承类,因为继承就会继承够着方法,继承就需要实现方法;接口可以实现接口,用关键字extends,其实接口实现接口主要是实现接口的组合,即1+2=3的关系。
e> 虽然接口中不能包含实例域和静态方法,但是却可以包含常量如:int a = 2;系统会自动的转换为public static final a = 2.在实现此接口的对象也继承了此类常量,可以在类中直接引用。这种实现方式似乎违背了接口的设计初衷,所以建议不这样写。
f> 虽然所有类只能有一个超类,但是可以实现多个接口。
g> 接口不是类,尤其不能用new运算符实例化一个接口,然而尽管不能构造接口的对象,却能申明接口的变量,但是接口变量必须引用实现了接口的类对象,他也可以用instanceof来检测是否是实现那个接口,而对于接口的遍历等等实例和抽象类差不多,可以参考抽象类。
分享到:
评论

相关推荐

    面向对象三个基本特征

    ### 面向对象三个基本特征 面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将程序中的各种实体抽象为对象,每个对象都可以包含数据(属性)以及对这些数据进行操作的方法(行为)。面向...

    面向对象的一些基本概念

    **继承**(Inheritance)是面向对象编程中的另一个重要概念,它允许我们创建一个新的类,该类继承自已有的类。新类被称为子类或派生类,已有的类被称为父类或基类。子类可以继承父类的所有属性和方法,并且可以根据...

    面向对象的三个基本特征

    **泛化**是UML中的一个重要概念,用来描述类之间的继承关系。一个类(子类)可以从另一个类(基类)派生,继承其属性和行为。在UML中,用空心三角形表示这种关系,强调子类是基类的一种特殊情况。泛化不仅限于类的...

    Java中面向对象的概念

    ### Java中面向对象的概念 #### 一、面向对象的基本概念 面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它通过模拟真实世界的对象...掌握面向对象的概念和技术对于Java程序员来说至关重要。

    如何理解面向对象的概念

    抽象是面向对象编程中的一个重要概念,它指的是从具体的事物中提取共性的特征,并忽略不必要的细节。在面向对象编程中,抽象主要体现在类的设计上: - 类是对象的抽象概念,它定义了一组具有相同属性和行为的对象的...

    面向对象的三个基本特征是:封装、继承、多态。

    通过理解面向对象的这三个基本特征,以及泛化和聚合的概念,开发者可以更加高效地利用面向对象的方法来设计和实现软件系统,进而编写出更加模块化、易维护和扩展的代码。这些概念对于编程初学者来说,是构建正确面向...

    js 面向对象实例

    面向对象编程在JavaScript中的实现主要基于以下三个概念:构造函数、原型和实例化。构造函数是一个特殊类型的函数,用于创建和初始化一个新对象。当你定义一个构造函数时,实际上是在定义一个对象类型。例如: ```...

    c#面向对象三原则

    在深入探讨C#面向对象编程的三大原则:封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)之前,我们先明确一下面向对象编程(OOP)的基本概念。面向对象编程是一种软件开发方法,它将数据和操作数据的方法...

    面向对象分析与设计第三版中文

    面向对象设计的核心是封装、继承和多态,这三个面向对象的基本特性是设计过程中不可或缺的。 “面向对象 面向对象分析”是作为标签出现,表明这本书聚焦于面向对象分析这一领域。面向对象的思想强调模块化、信息...

    面向对象技术-1

    面向对象方法学主要包括面向对象分析(OOA)、面向对象设计(OOD)和面向对象编程(OOP)三个阶段。 - **认知规律**:在面向对象方法学中,认知规律是指通过观察、理解和模拟现实世界中的实体来构建软件系统的规律...

    面向对象系统分析与设计.pdf

    1. 面向对象的概念:面向对象方法涉及三个基本概念:对象、类和继承。对象是现实世界实体在软件中的表现形式,每个对象都属于一个特定的类,类可以定义对象的属性和行为。继承是类之间的一种关系,允许一个类继承另...

    面向对象软件构造(内含57个参考文献)

    面向对象软件构造是软件开发领域中的一个重要概念,它基于面向对象编程(Object-Oriented Programming,简称OOP)的理念,通过模拟现实世界中的实体和它们之间的关系来构建复杂的软件系统。这种方法使得代码更加模块...

    C++面向对象程序设计教程——课件PPT

    首先,第1章“面向对象程序设计概述”引入了面向对象的基本理念,包括封装、继承和多态性三大核心概念。面向对象编程允许我们将复杂的问题分解为独立的对象,这些对象可以相互协作完成任务,提高代码的可读性和复用...

    JAVA的面向对象编程笔记(经典)

    面向对象方法的重载(overloading)和覆盖(overriding)是面向对象编程的两个重要概念。重载是指在一个类中可以定义多个同名方法,各个方法的参数列表不同。覆盖是指子类可以覆盖父类的方法。 十一、总结 本文...

    Java面向对象重要概念小结.docx

    Java面向对象编程是Java语言的核心特性,它基于三个主要原则:封装、继承和多态。在Java中,面向对象的设计允许我们模拟现实世界中的对象和它们之间的交互,从而提高代码的可读性、可维护性和复用性。下面是对Java...

    面向对象分析与设计(第3版)

    面向对象分析与设计是软件工程领域的一个重要分支,它强调以对象作为基本单元来构建软件系统,从而使得软件具有更好的模块化、复用性和可维护性。在软件开发的实践中,面向对象的思想和技术已成为主流。Grady Booch...

Global site tag (gtag.js) - Google Analytics