*小回顾—类(Class)和对象(Object)

Java 对象和类

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

@多态

@继承

@封装

@抽象

@类

@对象

@实例

@方法

@重载

本节我们重点研究对象和类的概念。


对象对象是类的一个实例(对象不是找个女朋友),有状态和行为。


例如:一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃


等。


类是一个模板,它描述一类对象的行为和状态。


下图中男孩女孩为类,而具体的每个人为该类的对象:



一、Java中的类

类的定义:类可以看成是创建Java对象的模板,是一个独立的程序单位,它描述一类对象的行为和状态。类是具有相同属性和服务的一组对象的集合。

类名一般首字母大写,遵循驼峰命名法。即标识符是由多个单词组成的,每个单词的首字母大写。

例如:MaxValue、AlarmClock都符合驼峰命名法。

类声明的语法:

[修饰符] class 类名{ }

例如:

public class Student{

String name;

String sex;

int  age;

}

public class Dog{
  // 成员变量
  String breed;
  int age;
  String color;
  
  public Dog() {
  //构造方法
  }

  //成员方法
  void barking(){
  }
 
  void hungry(){
  }
 
  void sleeping(){
  }
}


一个类包含三种属性:成员变量、构造方法、成员方法。

1.类的变量类型:
局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
类变量(也叫静态变量):类变量也声明在类中,方法体之外,但必须声明为static类型。
注:一个类可以拥有多个成员方法,在上面的例子中:barking()、hungry()和sleeping()都是Dog类的成员方法。

2.构造方法:
每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法(默认的构造方法不带参数)。
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
下面是一个构造方法示例:

public class Puppy{
public Puppy(){
    // 默认构造方法无参数
    }
    public Puppy(String name){
        // 重构一个带参数的构造方法,这个构造器仅有一个参数:name
    }
}


注意:
(1).构造方法名与类名相同。
(2).构造方法没有返回类型。
(3).构造方法名的调用必须通过new关键字调用。


3.成员方法:
成员方法的定义格式:

void 方法名称 (){

// 方法内容;
}

需要说明的是成员方法的定义必须在类中。
下面是成员方法的定义实例:

class Student{
      String name;
      String sex;
      int age;
      
      void study(){
        System.out.println("studying...");
}

      void display(){
        System.out.println("student name="+name);
        System.out.println("student sex="+sex);
        System.out.println("student age="+age);
   
   }
}


以上程序定义了Student类,Student类具有name、age和sex这3个成员表量,还具有study和display两个成员方法(即Student类具有三个静态的状态,两个动态行为)。
定义成员方法后,调用方法时使用“对象名.方法名()”来调用;比如要调用Student类中定义的study()和display()方法,可以写成:


public class Test{
      public static void main(String[] args){

        Student stu = new Student();
        
        stu.name = "小明";
        stu.sex = "男";
        stu.age= 18;
        stu.display();  // 方法的调用
        stu.study();  // 方法的调用

  }

}


二、Java中的对象
现在让我们深入了解什么是对象。看看周围真实的世界,会发现身边有很多对象,车,狗,人等等。所有这些对象都有自己的状态和行为。
拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。
对比现实对象和软件对象,它们之间十分相似。软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。
1.对象的定义:
对象是系统中用来描述客观事物的一个实体,是构成系统的基本单位。一个对象由一组属性和对属性进行操作的一组方法组成。

2.对象的创建:
对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:
<1>.对象的声明:声明一个对象,包括对象名称和对象类型。
<2>.对象的实例化:使用关键字new来创建一个对象。
<3>.对象的初始化:使用new创建对象时,会调用构造方法初始化对象。


下面是一个创建对象的例子:

public class Puppy{
   public Puppy(String name){
      //这个构造器仅有一个参数:name
      System.out.println("小狗的名字是 : " + name ); 
   }
   public static void main(String []args){
      // 下面的语句将创建一个Puppy对象
      Puppy myPuppy = new Puppy( "tommy" );
   }
}


编译并运行上面的程序,会打印出下面的结果:
小狗的名字是 : tommy

三、我们做来一个简单的例子
在该例子中,我们创建两个类:Employee 和 EmployeeTest。
Employee类有四个成员变量:name、age、designation和salary。该类显示声明了一个构造方法,该方法只有一个参数。


Employee.java 文件代码:
import java.io.*;
 
public class Employee{
   String name;
   int age;
   String designation;
   double salary;
   // Employee 类的构造器
   public Employee(String name){
      this.name = name;
   }
   // 设置age的值
   public void empAge(int empAge){
      age =  empAge;
   }
   /* 设置designation的值*/
   public void empDesignation(String empDesig){
      designation = empDesig;
   }
   /* 设置salary的值*/
   public void empSalary(double empSalary){
      salary = empSalary;
   }
   /* 打印信息 */
   public void printEmployee(){
      System.out.println("名字:"+ name );
      System.out.println("年龄:" + age );
      System.out.println("职位:" + designation );
      System.out.println("薪水:" + salary);
   }
}


程序都是从main方法开始执行。为了能运行这个程序,必须包含main方法并且创建一个实例对象。
EmployeeTest类,该类实例化2个 Employee 类的实例,并调用方法设置变量的值。

EmployeeTest.java 文件代码:
import java.io.*;
public class EmployeeTest{
 
   public static void main(String args[]){
      /* 使用构造器创建两个对象 */
      Employee empOne = new Employee("RUNOOB1");
      Employee empTwo = new Employee("RUNOOB2");
 
      // 调用这两个对象的成员方法
      empOne.empAge(26);
      empOne.empDesignation("高级程序员");
      empOne.empSalary(1000);
      empOne.printEmployee();
 
      empTwo.empAge(21);
      empTwo.empDesignation("菜鸟程序员");
      empTwo.empSalary(500);
      empTwo.printEmployee();
   }
}


编译这两个文件并且运行 EmployeeTest 类,可以看到如下结果:
$ javac EmployeeTest.java
$ java EmployeeTest 
名字:RUNOOB1
年龄:26
职位:高级程序员
薪水:1000.0
名字:RUNOOB2
年龄:21
职位:菜鸟程序员
薪水:500.0








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值