类和对象

---------------------- android培训java培训、期待与您交流! ---------------------- 

 

          面向对象程序设计(Object Oriented Programming,OOP)是一种基于对象概念的软件开发方法,是目前软件开发的主流方法。类是数据及对数据操作的封装体,类具有封装性、继承性和多态性。封装性是面向对象方法的基础。对象是类的实例,对象与类的关系就像变量和数据类型的关系一样。

一、类和对象概述

1、  类

        面向对象程序设计是当今软件设计的主流方法。在面向对象技术中,将客观世界中的一个事物作为一个对象看待。例如,有个人叫张三,就看作一个对象。每个事物都有自己的属性和行为。描述张三的属性有姓名、性别、身高、体重,他的行为包括阅读、开车、游泳等。在面向对象的程序设计中,将属性及行为合起来定义为类。类成为定义一组具有共同属性和行为的对象的模版。

         从程序设计的角度,事物的属性可以用变量描述,行为用方法描述。类中的变量称为成员变量,类中的方法称为成员方法。成员变量反映类的状态和特征,成员方法表示类的行为能力。不同的类具有不同的特征和行为。

        类具有封装性、继承性和多态性。类的这些特性构成面向对象程序设计思想的基石,实现了软件的可重用性,增强了软件的可扩充能力,提高了软件的可维护性。

2、  对象

        类只定义属性和行为的模版,仅有类还不够,还必须创建属于类的对象。对象是类的实例,对象与类的关系就像变量和数据类型的关系一样。例如:int型变量j可以存放int型值,可以对j进行int 型数据的加、减、乘、除等操作。对象是类的“取值”,能够保存类的一个实例。

二、类的封装

        封装是面向对象的核心特征之一。它提供了一种信息隐藏技术。类的封装包含两层含义:将数据和对数据的操作组合起来构成类,类是一个不可分割的独立单位;类中既要提供与外部联系的接口,同时又要尽可能隐藏类的实现细节。封装性为软件提供了一种模块化的设计机制,设计者提供标准化的类模块,使用者根据实际需求选择所需要的类模块,通过组装类模块实现大型软件系统。各模块之间通过接口衔接和协同工作。

访问权限

        Java为类设置了两种访问权限,为类中的成员变量和方法设置了四种访问权限。分别为:public(公有)、protected(保护)、缺省和private(私有)。四种访问权限的访问范围见下图。

 

 

权限修饰符

本类

本类所在包

其他包中的子类

其他包中的非子类

public

protected

缺省

private

 

三、        类的继承

         继承是由已有类创建新类的机制,是面向对象程序设计中实现软件可重用性的最重要的手段。

        由一个已有类定义一个新类,称为新类继承了已有类。被继承的已有类称为父类或超类,所定义的新类称为子类或派生类。通过继承,子类拥有父类的所有成员(除private成员和构造方法),包括成员变量和成员方法,也可以对父类中的成员变量和方法进行更改,使类的功能得以扩充。

定义子类:

[修饰符]  class  类名  extends  父类名

{

   成员变量声明部分

   成员方法声明部分

}

其中:

(1)                修饰符说明类的访问权限(public)、是否为抽象类(abstract)或最终类(final)。

(2)                类名表示通过继承定义的新类,extends后面的父类名表示新类所继承的父类。类名需符合java对标识符的规定。

(3)                一个类只能继承一个父类,称为单重继承。

 

四、        类的多态

        多态性指同一名字的方法可以有多种实现,程序运行时,根据调用方法的参数或调用方法的对象自动选择一个方法执行。类的多态性提供了方法设计的灵活性和执行的多样性。多态通过方法的重载(overload)和覆盖(override)来实现。

①    方法重载

        在一个类中,多个方法具有相同的方法名,却具有不同的参数表,称为方法的重载。程序运行时,根据参数表决定所执行的方法。重载表现为同一个类中方法的多态性。

重载方法中的参数表必然不同,表现为参数个数不同,或参数类型不同或参数顺序不同。

②    方法覆盖

        覆盖是指子类重定义了父类中的同名方法。覆盖表现为父类与子类之间方法的多态性。如果父类中的方法体不适合子类,子类中可以重新定义之。子类中定义的方法与父类中的方法具有相同的方法名和参数表,但具有不同的方法体。父类和子类具有同名方法,称子类方法覆盖了父类方法。

例:

public class A

{

    public void start()

    {

        System.out.println(“A is start!”);

    }

}

class B extends A

{

public void start()

    {

        System.out.println(“B is start!”);

    }

}

 

        上面这个例子中,子类B覆盖了A中的start()方法.

 

 

---------------------- android培训java培训、期待与您交流! ----------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值