当前位置:首页 > 网站建设 > 正文

Java对象和类

Java作为一种面向对象语言。支持以下基本概念: 多态、继承、封装、抽象、类、对象、实例、方法、重载。

我们重点研究对象和类的概念:

   对象 : 对象具有状态和行为.例如:一只狗的状态 - 颜色,名称,品种以及行为 - 摇尾巴,吠叫,吃东西.对象是类的实例。

    : 可以将类定义为模板/蓝图,描述其类型对象支持的行为/状态。


Java中的对象:

现在让我们深入了解什么是对象,

如果我们考虑现实世界,我们可以在我们周围找到许多物体,汽车,狗,人等.所有这些物体都有状态和行为。

如果我们考虑一只狗,然后它的状态是 - 名称,品种,颜色,行为是 - 吠叫,摇尾巴,跑步。

如果你将软件对象与真实世界的对象进行比较,具有非常相似的特征。

软件对象也有状态和行为.软件对象的状态存储在字段中,行为通过方法显示。

因此在软件开发中,方法对对象的内部状态进行操作,并且对象到对象的通信完成通过方法。


Java中的类:

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

一个类可以包含以下任何变量类型:

本地变量 : 在方法,构造函数或块中定义的变量称为局部变量.变量将在方法中声明和初始化,并且当方法完成时变量将被销毁。

实例变量&minus ;实例变量是类中的变量,但在任何方法之外.在实例化类时初始化这些变量。可以从该特定类的任何方法,构造函数或块内部访问实例变量。

类变量 : 类变量是在类中,在任何方法之外使用static关键字声明的变量。

一个类可以有任意数量的方法访问各种方法的价值.在下面的例子中,barking(),hungry()和sleeping()是方法。

以下是一个班级的示例:

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


构造方法:

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

在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

下面是一个构造方法示例:

public class Puppy{
    public Puppy(){
    }
    public Puppy(String name){
        // 这个构造器仅有一个参数:name
    }
}
Java还支持 Singleton类,您只能创建一个类的实例.


创建对象:

对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:

一、声明:声明一个对象,包括对象名称和对象类型。

二、实例化:使用关键字new来创建一个对象。

三、初始化:使用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



访问实例变量和方法:

通过创建的对象访问实例变量和方法.要访问实例变量,以下是完全限定的路径 :

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


示例:

此示例说明如何访问类的实例变量和方法.

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 ); 
   }
}

编译并运行上面的程序,产生如下结果:

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


源文件声明规则:

当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则。

一个源文件中只能有一个public类

一个源文件可以有多个非public类

源文件的名称应该和public类的类名保持一致。例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java。

如果一个类定义在某个包中,那么package语句应该在源文件的首行。

如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。

import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。

类有若干种访问级别,并且类也分不同的类型:抽象类和final类等。这些将在访问控制章节介绍。

除了上面提到的几种类型,Java还有一些特殊的类,如:内部类、匿名类。


Java包:

包主要用来对类和接口进行分类。当开发Java程序时,可能编写成百上千的类,因此很有必要对类和接口进行分类。


导入语句:

在Java中,如果给出了包含包和类名的完全限定名称,则编译器可以轻松找到源代码或类. Import语句是一种为编译器提供正确位置以查找特定类的方法.

例如,以下行将要求编译器加载目录java_installation/中可用的所有类. java/io :

import java.io.*;


一个简单的例子:

我们将创建两个类.它们是Employee和EmployeeTest.

首先打开记事本并添加以下代码.记住这是Employee类,类是公共类.现在,使用名称Employee.java保存此源文件.

Employee类有四个实例变量 - 名称,年龄,名称和工资.该类有一个显式定义的构造函数,它接受一个参数.

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方法开始.因此,为了让我们运行这个Employee类,应该有一个main方法,并且应该创建对象.我们将为这些任务创建一个单独的类。

以下是 EmployeeTest 类,它创建Employee类的两个实例并为每个对象调用方法为每个变量赋值。

将以下代码保存在EmployeeTest.java文件中。

EmployeeTest.java 文件代码:

import java.io.*;
public class EmployeeTest{
   public static void main(String[] args){
      /* 使用构造器创建两个对象 */
      Employee empOne = new Employee("dandelioncloud1");
      Employee empTwo = new Employee("dandelioncloud2");
      // 调用这两个对象的成员方法
      empOne.empAge(26);
      empOne.empDesignation("高级程序员");
      empOne.empSalary(10000);
      empOne.printEmployee();
      empTwo.empAge(21);
      empTwo.empDesignation("普通程序员");
      empTwo.empSalary(5000);
      empTwo.printEmployee();
   }
}

编译这两个文件并且运行 EmployeeTest 类,可以看到如下结果:

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


相关文章:

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。