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类中定义的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(); // 方法的调用
}
}
现在让我们深入了解什么是对象。看看周围真实的世界,会发现身边有很多对象,车,狗,人等等。所有这些对象都有自己的状态和行为。
拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。
对比现实对象和软件对象,它们之间十分相似。软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。
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);
}
}
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();
}
}
$ javac EmployeeTest.java
$ java EmployeeTest
名字:RUNOOB1
年龄:26
职位:高级程序员
薪水:1000.0
名字:RUNOOB2
年龄:21
职位:菜鸟程序员
薪水:500.0