面向对象

一. 面向对象的介绍

1.面向过程和面向对象

1. 面向过程
面向过程”是一种以过程为中心的编程思想。 只要 分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现, 使用的时候一个一个依次调用这些函数就可以 了。
例如 C 语言属于面向过程编程语言。
2. 面向对象
“面向对象” (ObjectOriented Programming 简称 OO P ) 是一种以事物为中心的编程思想。
面向对象需要把待解决的问题分解成各个对 模型 并且设计好各个对象所具有的属性和功能。使用的时候需要创建出所需要的对象,然后让这些对象去共同解决问题。
例如 Java C++ 属于面向对象编程语言。

2.类和对象

1. 类是对某一类事物的描述,是抽象的、概念上的定义;对象是实际存在的该类事物的每个个体, 是具有类类型的变量。 因而也称实例 (instance)
2. 类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。
3. 如果将对象比作汽车,那么类就是汽车的设计图纸。所以面向对象程序设计的重点是类的设计,而不是对象的设计。

3. 面向对象的特征

面向对象的三个基本特征是:封装、继承、多态
1. 封装可以隐藏对 象的属性和实现细节,仅对外公开接口 ,并且可以控制对象的属性和方法的访问级别,提高了程序的模块化及安全性,且易于维护。
2. 继承使得一个类可以直接使用另一个类中 的属性和方法。 并且在无 需重新编写原来的类 的情况下可以对这些功能进行扩展 继承体现了对现实世界的抽象模拟,提高了代码的复用性。
3. 多态按字面的意思就是“多种状态” 。多态的作用是 可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。 

4.Java中的面向对象

1. Java 完全基于类、对象
2. Java 中的类结构
Java 的类可组织在包 ( package )
基类:所有 Java 的类都派生自 Object
Java 提供一些标准类库,这些类库分布在一系列的包中,如 java.lang ,java.util,java.net ( 参考 JDK 安装路径下的 src.zip

二. 类的声明和使用

1.类的声明

1. 类声明语法:
[类修饰符]  class 类名

        [extends   超类名]

        [implements 接口名]{

成员变量定义;

     方法定义;

  }

2. 类修饰符 (Modifier):
public: 允许其他类 ( 没有限制 ) 访问本类,一个源文件仅可以有一个 public
缺省 ( 没有 public) :可被当前包中的其他类访问
abstract: 没有实例的抽象概念类
final: 不能再被扩展,不包含子类的类;易于安全性的实现,或用于创建固定功能的类
3. 父类继承声明: extends 父类名
4. 实现接口( interface):implements 接口名
5. Abstract 不能和 final 同时修饰同一个类
6. 类声明的例子
publicabstract class Sample1 {…………}
classSample2 extends Sample1 {…………}
finalclass Sample3 extends Sample2 {…………}

3.类的成员变量的声明

1. 声明类的成员变量 ( member ) 的语法
[修饰符]数据类型 变量名 ;
2. 修饰符
访问控制符
     -- public: 可被所有类引用
      --protected:该类自身、子类、同一包中的其他类
     -- 缺省 (没有访问控制符 ) :该类自身、本包中的类
     -- private: 仅可被该类自身引用和修改, 不能被其他任何类 ( 包括子类 ) 引用
static :类成员变量,对所有的实例一致,引用是前缀可使用类名或对象名
final: 数值不变常量,定义同时应对其进行初始化,不一定,也可以利用构造函数给不同的对象赋不同的值。
3. 成员变量声明的例子
publicclass Sample {

      public int x;

       privateString str;

       static final double pi = 3.1415926D;

       …………………… 

  }

4.类成员方法的声明
1. 声明类的成员方法 (method) 的语法
[修饰符]返回类型 方法名 ( 参数类型形式参数 1

            参数类型 形式参数2)[throws例外名]{

      方法体;

          return 返回值;//没有返回值时可以省略

  }

2. 方法说明:
形式参数:在方法被调用时用于接收外部传入的数据的变量
参数类型:就是该形式参数的数据类型
实参:调用方法时实际传给方法形式参数的数据
返回值:方法在执行完毕后返还给调用它的程序的数据
返回值类型:方法要返回的结果的数据类型。没有返回值时为 void
3. 修饰符
访问控制符
n public: 可被所有类引用
n protected: 该类自身、子类、同一包中的其他类
n 缺省 (没有访问控制符 ) :该类自身、本包中的类
n private: 仅可被该类自身引用和修改,不能被其他任何类 ( 包括子类 ) 引用
static 静态方法,又称 类方法。前缀可使用类名或对象名。在方法体中只能使用类的 static变量和static方法
final: 子类中不能重新定义该方法
abstract: 抽象方法,只有方法的定义而没有方法体。需要在子类中通过重写该方法来实现
throws: 通告本方法中会产生的例外 ( 异常 ) 类型,提醒调用者要对相应的可能例外进行处理
4. 成员方法声明的例子

 publicclass Sample {

    privateint x;

    private static double pi = 3.1415926D;

    public void setX(intnewX) {

        x = newX; // 可以直接使用成员变量

    }

    public final intgetX() {

        return x;

    }

    public static void setPi(double newPi) {

        pi = newPi; // 静态方法中只能使用静态成员变量

    }

 }

5.对象的创建
创建某个类的具体对象

   类名 欲创建的对象名 = new 类名(参数表);

例子:

Person类的定义:

   publicclass Person {

             publicint age;

       publicvoid shout() {

           System.out.println("Myage is "+age);

       }

   }

Person类的使用:

   Person p1 = new Person();

Personp1 = new Person(); 语句执行完后的内存状态


当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。

6.对象的使用

对象创建之后就可以使用“对象名 . 对象成员”的格式来访问对象的成员 ( 包括属性和方法 )

  public class SamplePerson {

      public static void main(String[] args) {

          Person p1 = new Person();

          Person p2 = new Person();

          p1.age = -30; // 设置成员变量的值

          p1.shout();   // 调用成员方法

          p2.shout();

  }

   }

上面程序运行的 内存布局如下图:

6.匿名对象
1. 我们可以不定义对象的名字,而是直接调用这个对象的方法。这样的对象叫做匿名对象。
2. 如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。
普通调用: Personp1 = new Person();

             p1.shout();

匿名调用: ( newPerson() ) .shout();

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值