第一阶段 07类与对象

类与对象

(1)面向对象(简称:OOP,全称:Object Oriented Programming)

     面向对象是一种编程思想,相对面向过程而言

        面向过程

         强调的是功能的过程

        面向对象

         强调功能的结果,不在乎实现的方法

  面向对象特征:封装、继承、多态

(2)类与对象的关系

     类是一个抽象的概念;

     而对象是类抽象概念的实物表达;

     定义一个类表示定义了一个功能模块

   例:

     生活中有各种水果,水果就是类,而具体的西瓜、桃、苹果就是对象

(3)类的定义

    类包括属性和方法

    例:

      人有身高,体重,说话,打球的行为

    Java中用类class来描述事物

      属性:对应类中的成员变量

      行为:对应类中的成员方法

(4)创建对象,使用对象

    class Car{ //对Car类事物进行描述

        String color =“red”;

        int num = 4;

        void show(){

          System.our.println("color="+color+"...num="+num);

        }

      }

      class CarDemo{

        public static void main(String[ ] args){

          Car c = new Car();//创建对象,创建类的实例是通过new关键字来定义的

          c.color = "black" ;//调用对象的属性进行修改

          c.show();//调用对象的功能(方法)

        }

       }

(5)成员变量

     所谓成员变量就是这个类里定义的一些私有的变量,这些变量是术语这个类的。就好比日常生活中的自行车的大小,即这个车子是26还是28的,这个尺寸就是自行车的成员变量,是描述这个自行车的。下面开始介绍成员变量

   (5.1)成员变量的创建

    成员变量描述的是这个类的一些属性或状态的,下面通过代码来演示怎么定义成员变量。语法为:变量的类型 变量的名称

  //bike类描述的是一个自行车

  public class bike{

    //这个成员变量描述的是自行车的颜色

    String color;

    //这个成员变量描述的是自行车的尺寸

    String size;

}

    在该程序中,定义了一个叫bike的类,在该类中定义了两个成员变量,一个表示自行车颜色的color成员变量,一个表示自行车型号的size成员变量

  (通过new关键字来创建这个bike类的对象,用bike类的对象引用b来给其成员变量赋值。因为成员变量是在这个类实例化后才能访问到的。成员变量赋完值后,调用println语句来打印显示结果)

 

(5.2)成员变量的初始化

  通过new关键字来创建一个对象后,会有一个系统默认的初始值。所以说不管有没有在创建成员变量的时候变量一个值,系统都会有一个默认的值

 

(6)局部变量

  局部变量和成员变量很相似都是描述信息的。局部变量和成员变量的不同点就是局部变量是在方法体内创建的,在方法体外是访问不到这个变量的

  (6.1)局部变量的创建和初始化

   局部变量描述的是方法体的一些属性或状态,下面通过代码来演示怎么定义局部变量。创建局部变量的基本语法为:变量的类型  变量的名称

   例:

     //test类描述的是基本类型的初始化

     public class test{

      public static void main(String[ ] args){

        //基本类型的局部变量

        int size = 123:

        boolean b = true;

        //打印并显示局部变量

        System.out.println(size);

        System.out.println(b);

  }

}

(6.2)局部变量和成员变量的区别

   局部变量描述的是这个方法体内的属性的,而成 员变量描述的是这个对象里的属性的,它们之间 的区别,即访问区别如下

      成员变量可以被 public、 protected、 defau|t private、 static、fina|修饰符修饰。

      局部变量可以被final修饰符修饰,但不能修饰为 public、 protected、 default、 private、 static。

      成员变量是在堆里进行创建的,而局部变量是在 栈里进行创建的。 成员变量是系统默认值。

      局部变量没有系统默认值,必须手动赋值。

(7)方法

    每个人都有走、吃和睡等动作。在Java中,所谓 方法就好比日常生活中的一个动作,是完成一系 列操作的。在Java中也是如此,方法收到对象的 信息,进行处理的操作。

(7.1)方法的创建和参数

    方法的参数是提供外界在执行方法的时候提供给 方法的特殊描述信息的,好比日常生活中的,用 力砸东西,用大力砸东西。而这个用大力就是提 供给这个进行特殊描述的。

    创建方法的语法为:

      方法修饰符 方法的返回类型 方法名称(方法参数){

                    ( 方法体)

                }

    

   方法的定义如下所示。

     public void add(int i, int n){

        System. out. printin(i+n);

  } 

  代码说明:

    方法名为add,有两个参数都是int类型的

    方法体是打印i+n的值,并显示处理啊

    方法修饰符为public类型的,修饰符可有可无

    方法的返回为空(void)

(7.2)方法的返回类型

    方法的返回类型有很多种,主要分为如下几类。

      方法返回值为Void类型时为无返回值。

      方法返回值还可以为任意的类型,如 String Boolean、int。

      如果定义了方法的返回类型就必 须在方法体内用 return把返回值进行返回。 方法的返回值可以为nu,但必须是对象类型。 基本类型不能返回null。 在返回值为基本类型的时候,只要能够自动转换 就可返回。 方法的返回类型可以为 object对象 方法的参数也有多种形式,下面是对方法参数的 讨论。 方法的参数可以为基本数据类型,也可以为对象 引用类型。 每个参数都有完整的声明该变量的形式。 方法的参数可以有一个,也可有多个。 Java程序的入口main就为一个方法,参数为 Stringl args,它是个特殊的方法。

(7.3)方法参数的传递

     参数的传递是传递的值还是引用呢。下面通过例 子来分别说明,请仔细考虑。

    例:

     当传递类型为基本类型时,传递的是该 类型的值。

      /test类描述的是基本类型的传递

      public class test{

      //方法add是把传入的参数进行+1,并显示 其结果

      public void add(int i) {

          i=i+1;

          System.out.println(i);

      }

      //程序的运行方法,即入口方法

      public static void main(String[ ] args){

        //基本类型的局部变量

        int size = 44;

        //创建bike类的对象实例,即bike类的对象应用b

        test t = new test();

        //打印运行后的值

        System.out.println(size);

    }

}

   (7.4)方法的重载

   我们假设要在程序中实现一个对数字求和的方法,由于参与求和数字的个数和类型都不确定,因此要针对不同的情况去设计不同的方法。接下来通过一个案例来实现对两个整数相加、对三个整数相加以及对两个小数相加的功能,具体实现如下所示。MethodDemo02.java 

public class MethodDemo02 {

 

    public static void main(String[] args) {

 

        // 下面是针对求和方法的调用

 

        int sum1 = add01(1, 2);

 

        int sum2 = add02(1, 2, 3);

 

        double sum3 = add03(1.2, 2.3);

 

        // 下面的代码是打印求和的结果

 

        System.out.println("sum1=" + sum1);

 

        System.out.println("sum2=" + sum2);

 

        System.out.println("sum3=" + sum3);

 

    }

 

 

 

    // 下面的方法实现了两个整数相加

 

    public static int add01(int x, int y) {

 

        return x + y;

 

    }

 

    // 下面的方法实现了三个整数相加

 

    public static int add02(int x, int y, int z) {

 

        return x + y + z;

 

    }

 

    // 下面的方法实现了两个小数相加

 

    public static double add03(double x, double y) {

 

        return x + y;

 

    }

 

}

 

  从上述代码不难看出,程序需要针对每一种求和的情况都定义一个方法,如果每个方法的名称都不相同,在调用时就很难分清哪种情况该调用哪个方法。

 

  为了解决这个问题,Java允许在一个类中定义多个名称相同的方法,但是参数的类型或个数必须不同,这就是方法的重载。

(7.5)重载的注意事项

 

      重载方法参数必须不同:

        参数个数不同,如method(int x)与method(int x,int y)不同

        参数类型不同,如method(int x)与method(double x)不同g

        参数顺序不同,如method(int x,double y)与method(double x,int y)不同

      重载只与方法名与参数类型相关与返回值无关

        如void method(int x)与int method(int y)不是方法重载,不能同时存在

      重载与具体的变量标识符无关

         如method(int x)与method(int y)不是方法重载,不能同时存在

 

 

 

(8)this关键字

    特点:this代表其所在函数所属对象的引用

    什么时候使用this关键字呢?

      当函数内需要用到调用该函数对象时,就用this

posted @ 2018-04-19 19:30  <白泽>  阅读(229)  评论(0)    收藏  举报