Java对象和类

在章节中,我们将学习Java对象和类。在面向对象的编程技术中,我们使用对象和类设计程序。

Java中的对象既是物理实体又是逻辑实体,而Java中的类仅是逻辑实体。

1 Java中的对象是什么

具有状态和行为的实体称为对象,例如椅子,自行车,记号笔,笔,桌子,汽车等。它可以是物理的或逻辑的(有形的和无形的)。无形资产的例子是银行系统。

一个对象具有三个特征:

  • 状态:表示对象的数据(值)。
  • 行为:表示对象的行为(功能),例如存款,提款等。
  • 身份:对象身份通常通过唯一ID来实现。该ID的值对外部用户不可见。但是,JVM在内部使用它唯一地标识每个对象。

例如,Pen是一个对象。它的名字叫Reynolds。颜色为白色,称为状态。它用于书写,因此书写是其行为。

对象是类的实例。类是创建对象的模板。因此,对象是类的实例。

对象定义:

  • 对象是真实世界的实体。
  • 对象是运行时实体。
  • 对象是具有状态和行为的实体。
  • 该对象是类的实例。

2 Java中的类是什么

类是具有共同属性的一组对象。它是创建对象的模板。它是一个逻辑实体。它不是物理的。

Java中的类可以包含:

  • 字段
  • 方法
  • 构造函数(构造方法)
  • 代码块
  • 内部类和接口

声明类的语法:

class <class_name>{  
    field;  
    method;  
}  

3 Java中的实例变量

在类内部,方法外部创建的变量称为实例变量。实例变量在编译时不占用内存。创建对象或实例时,它将在运行时分配内存。这就是为什么它被称为实例变量的原因。

4 Java中的方法

在Java中,方法就像一个函数,用于公开对象的行为。

方法优势

  • 代码可重用性
  • 代码优化

5 Java中的new关键字

new关键字用于在运行时分配内存。所有对象都在堆存储区中获得存储。

6 对象和类的示例:类里面的main函数

在下面示例中,我们创建了一个Student类,该类具有两个数据字段id和name。我们通过new关键字创建Student类的对象,并打印该对象的值。

我们在类内部创建一个main()方法。

Student.java:

/*
 *  一点教程网:http://www.yiidan.com
 *  该示例说明如何定义类和字段
 *
*/
//定义Student类
class Student{
    //定义字段
    int id;//该id为实例变量
    String name;
    //在Student类中创建main方法
    public static void main(String args[]){
        //创建Student对象
        Student s1=new Student();
        //打印对象的值
        System.out.println(s1.id);//通过引用变量访问成员
        System.out.println(s1.name);
    }
} 

输出结果:

0
null

7 对象和类的示例:类外面的main函数

在实际开发中,我们经常创建类并从另一个类中使用它。让我们看一个简单的示例。

我们可以在不同的Java文件或单个Java文件中拥有多个类。如果在单个Java源文件中定义多个类,则最好使用具有main()方法的类名保存文件名。

TestStudent1.java:

/*
 *  一点教程网:http://www.yiidan.com
 *  该示例说明类外面的main函数
 *
*/
//在另一个类中有main方法
//定义Student类
class Student{
    int id;
    String name;
}
//创建另一个类TestStudent1包含main方法
class TestStudent1{
    public static void main(String args[]){
        Student s1=new Student();
        System.out.println(s1.id);
        System.out.println(s1.name);
    }
}

输出结果:

0
null

8 3种初始化对象的方法

Java中有3种初始化对象的方法。

  • 通过引用进行初始化
  • 通过方法进行初始化
  • 通过构造函数初始化

8.1 通过引用进行初始化

初始化对象意味着将数据存储到对象中。让我们看一个简单的示例,在该示例中,我们将通过引用变量来初始化对象。

TestStudent2.java:

/*
 *  一点教程网:http://www.yiidan.com
 *  该示例说明通过引用进行初始化对象
 *
*/
class Student{
    int id;
    String name;
}
class TestStudent2{
    public static void main(String args[]){
        Student s1=new Student();
        //通过引用变量进行对象初始化
        s1.id=101;
        s1.name="一点教程网";
        System.out.println(s1.id+" "+s1.name);//打印Student对象的实例变量  
    }
}  

输出结果:

101 一点教程网

我们还可以创建多个对象,并通过引用变量存储对象的信息。

TestStudent3.java:

/*
 *  一点教程网:http://www.yiidan.com
 *  该示例说明通过引用变量初始化多个对象
 *
*/
class Student{
    int id;
    String name;
}
class TestStudent3{
    public static void main(String args[]){
        //创建Student对象
        Student s1=new Student();
        Student s2=new Student();
        //通过引用变量初始化对象
        s1.id=101;
        s1.name="一点教程网";
        s2.id=102;
        s2.name="yiidian.com";
        //打印数据
        System.out.println(s1.id+" "+s1.name);
        System.out.println(s2.id+" "+s2.name);
    }
}

输出结果:

101 一点教程网
102 yiidian.com

8.2 通过方法进行初始化

在下面示例中,我们将创建Student类的两个对象,并通过调用insertRecord方法将这些对象的值初始化。我们将通过调用displayInformation() 方法来显示对象的状态(数据)。

TestStudent4.java:

/*
 *  一点教程网:http://www.yiidan.com
 *  该示例说明通过方法初始化对象
 *
*/
class Student{
    int rollno;
    String name;
    void insertRecord(int r, String n){
        rollno=r;
        name=n;
    }
    void displayInformation(){System.out.println(rollno+" "+name);}
}
class TestStudent4{
    public static void main(String args[]){
        Student s1=new Student();
        Student s2=new Student();
        s1.insertRecord(111,"张三");
        s2.insertRecord(222,"李四");
        s1.displayInformation();
        s2.displayInformation();
    }
}

输出结果:

111 张三
222 李四

如上图所示,对象在堆内存区域中获取内存。引用变量引用在堆内存区域中分配的对象。此处,s1和s2都是引用变量,它们引用在内存中分配的对象。

8.3 通过构造函数初始化

后面章节我们再学习Java中的构造函数:《Java构造方法》。

9 Java创建对象的方式有哪些

有很多方法可以用Java创建对象。分别有:

  • 通过new 关键字
  • 通过newInstance() 方法
  • 通过clone() 方法
  • 通过反序列化
  • 通过工厂方法

后面章节中,我们将会学习这些创建对象的方法。

一点教程,一个分享编程知识的公众号。跟着站长一起学习和进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

文章不涉及代码,不烧脑细胞,人人都可以学习。

当你决定关注「一点教程」,你已然超越了90%的程序员!

一点教程二维码