快速入门 - Java 对象和类

2022年6月28日
大约 4 分钟

快速入门 - Java 对象和类

所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。

类是具备某些共同特征的实体的集合,它是一种抽象的概念,用程序设计的语言来说,类是一种抽象的数据类型,它是对所具有相同特征实体的抽象。

类与对象时整个面向对象中最基础的组成单元。

类:是抽象的概念集合,表示的是一个共性的产物,类之中定义的是属性和行为(方法);

对象:对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象。

可以一句话来总结出类和对象的区别:类是对象的模板,对象是类的实例。类只有通过对象才可以使用,而在开发之中应该先产生类,之后再产生对象。类不能直接使用,对象是可以直接使用的。

类与对象的关系:

类是对象的集合,对象是类的实例;对象是通过new className产生的,用来调用类的方法;类的构造方法。

在面向对象定义之中,也规定了一些基本的特征:

  1. 封装:保护内部的操作不被破坏;

  2. 继承:在原本的基础之上继续进行扩充;

  3. 多态:在一个指定的范围之内进行概念的转换。

对于面向对象的开发来讲也分为三个过程:OOA(面向对象分析)、OOD(面向对象设计)、OOP(面向对象编程)。

源文件声明规则

当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意规则:一个源文件中只能有一个public类,一个源文件可以有多个非public类,源文件的名称应该和public类的类名保持一致。

例如:源文件中public类的类名是Test,那么源文件应该命名为Test.java,如果一个类定义在某个包中,那么package语句应该在源文件的首行。如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。

构造方法

每个类都有构造方法。如果没有显式的为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

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

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

类、对象定义和使用

Java包

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

Import语句

在Java中,如果给出一个完整的限定名,包括包名、类名,那么Java编译器就可以很容易地定位到源代码或者类。Import语句就是用来提供一个合理的路径,使得编译器可以找到某个类。

在Java中定义类,使用关键字class完成,语法如下:

class 类名称 {
 属性 (变量) ;
 行为 (方法) ;
}

范例:定义一个Person类,具体代码如下:

class Person {     // 类名称首字母大写
    String name ;
    int age ;
    public void tell() {// 没有static
  System.out.println("姓名:" + name + ",年龄:" + age) ;
 }
}

类定义完成之后,是无法直接使用。如果要使用,必须依靠对象,那么由于类属于引用数据类型,所以对象的产生格式(两种格式)如下:

  1. 格式一:声明并实例化对象
类名称 对象名称 = new 类名称();
  1. 格式二:先声明对象,然后实例化对象
类名称 对象名称 = null ;
对象名称 = new 类名称 () ;

引用数据类型与基本数据类型最大的不同在于:引用数据类型需要内存的分配和使用。所以,关键字new的主要功能就是分配内存空间,也就是说,只要使用引用数据类型,就要使用关键字new来分配内存空间。

当一个实例化对象产生之后,可以按照如下的方式进行类的操作

对象.属性:表示调用类之中的属性;
对象.方法():表示调用类之中的方法。

一个简单的例子

使用对象操作类,具体实例

package com.yoodb.blog;
 
class Person { 
    String name ;
    int age ;
    public void get() {
        System.out.println("姓名:" + name + ",年龄:" + age);
    }
}
 
public class TestDemo {
    public static void main(String args[]) {
        Person per = new Person() ;// 声明并实例化对象
        per.name = "张三" ;//操作属性内容
        per.age = 30 ;//操作属性内容
        per.get();//调用类中的get()方法
    }
}