Java 对象和类

Java 从设计之初就已经是一门面向对象的语言

如果你以前没有接触过面向对象的编程语言,那可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习 Java 的面向对象编程

Java作为一种面向对象语言,支持以下基本概念

  • 多态
  • 继承
  • 封装
  • 抽象
  • 对象
  • 实例
  • 方法
  • 重载

但本章节我们主要是介绍类和对象的概念

术语 说明
对象 对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等
类是一个模板,它描述一类对象的行为和状态

我们使用一张图来形象的说明这一点,下图中男孩女孩为类,而具体的每个人为该类的对象

注意: 对象不是找个女朋友

Java 中的对象

看看周围真实的世界,会发现身边有很多对象,车,狗,人等等,所有这些对象都有自己的状态和行为

拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑

对比现实对象和软件对象,它们之间十分相似

软件对象也有状态和行为,软件对象的状态就是属性,行为通过方法体现

在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成

Java中的类

类可以看成是创建 Java 对象的模板

我们通过一个类 Dog 来解释 Java 中的类

public class Dog{
  String breed;
  int age;
  String color;
  void barking(){
  }

  void hungry(){
  }

  void sleeping(){
  }
}

一个类可以包含以下类型变量

  • 局部变量 :在方法、构造方法或者语句块中定义的变量被称为局部变量

    变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁

  • 成员变量 :成员变量是定义在类中,方法体之外的变量

    这种变量在创建对象的时候实例化

    成员变量可以被类中方法、构造方法和特定类的语句块访问

  • 类变量 :类变量也声明在类中,方法体之外,但必须声明为 static 类型

一个类可以拥有多个方法,比如上面的代码中的:barking()、hungry() 和 sleeping()都是 Dog 类的方法

构造方法

每个类都有构造方法

如果没有显式地为类定义构造方法,Java 编译器将会为该类提供一个默认构造方法

在创建一个对象的时候,至少要调用一个构造方法

构造方法的名称必须与类同名,一个类可以有多个构造方法

下面的代码为类 Puppy 定义了两个构造方法

public class Puppy {

    public Puppy(){
    }

    public Puppy(String name){
        // 这个构造器仅有一个参数:name
    }
}

创建对象

对象是根据类创建的

Java 使用关键字 new 来创建一个新的对象

创建对象需要以下三步

  • 声明 :声明一个对象,包括对象名称和对象类型
  • 实例化 :使用关键字new来创建一个对象
  • 初始化 :使用new创建对象时,会调用构造方法初始化对象

下面的代码创建了一个 Puppy 类的对象

public class Puppy
{
    public Puppy(String name)
    {
        //这个构造器仅有一个参数:name
        System.out.println("小狗的名字是 : " + name ); 
    }

    public static void main(String []args)
    {
        // 下面的语句将创建一个Puppy对象
        Puppy myPuppy = new Puppy( "tommy" );
    }
}

编译运行以上 Java 代码,输出结果如下

小狗的名字是 : tommy

访问对象的变量和方法

我们可以通过已创建的对象来访问成员变量和成员方法

/* 实例化对象 */
ObjectReference = new Constructor();
/* 访问类中的变量 */
ObjectReference.variableName;
/* 访问类中的方法 */
ObjectReference.MethodName();

下面的范例访问了对象 myPuppy 的 setAge() 和 getAge() 方法

public class Puppy{
   int puppyAge;
   public Puppy(String name){
      // 这个构造器仅有一个参数:name
      System.out.println("小狗的名字是 : " + name ); 
   }

   public void setAge( int age ){
       puppyAge = age;
   }

   public int getAge( ){
       System.out.println("小狗的年龄为 : " + puppyAge ); 
       return puppyAge;
   }

   public static void main(String []args){
      /* 创建对象 */
      Puppy myPuppy = new Puppy( "tommy" );
      /* 通过方法来设定age */
      myPuppy.setAge( 2 );
      /* 调用另一个方法获取age */
      myPuppy.getAge( );
      /*你也可以像下面这样访问成员变量 */
      System.out.println("变量值 : " + myPuppy.puppyAge ); 
   }
}

编译运行以上 Java 代码,输出结果如下

小狗的名字是 : tommy
小狗的年龄为 : 2
变量值 : 2

Java 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2018 简单教程 twle.cn All Rights Reserved.