我们都知道Java是一门面向对象的编程语言,而类是面向对象中最为核心的一部分,在百度百科中,类的解释为**” 类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。 “**

而在Java中,更是有万物皆对象的说法。以下是笔者在学习Java中类与对象的一些见解,如有错误,欢迎指正。

类与对象的关系

类是一种抽象的概念,可以看作是所有具有相同属性和方法的集合;而对象则是类的实例化,是一种具体的概念。

比如Student(学生)就是一种抽象概念,但实际上并不存在具体的学生,而是我们所有在上学的人的一种集合;而具体到每一个人身上,如小明,小红就是对象,他们是实际存在的个体,是学生的具体化,就称为对象。

类的定义

在Java中,类中包含属性和方法,属性是用来保存特性,描述该类实例化后的对象的一些共同特征,而方法则是一些共同的行为特征。

定义的格式如下:

class Student{
    //属性
    String name;
    int age;

    //方法
    void ReadingBook(){
        System.out.println(name+" is reading book ");
    }
}

对象的实例化

在Java中,对象示例话主要使用new关键字

Student Jom=new Student();

构造器

在上面的例子中,我们发现调用Jom这个对象中的方法时,发现输出结果为

Java类也是对象 java中对象是类的什么_Java

并不是我们想要输出实例化对象正在读书的结果,那么,怎么给类型的属性赋值呢,这里我们可以使用带参构造器,在对象示例化时就给对象的相应属性赋值。

在类的方法中添加如下代码

Student(String name,int age){
    this.name=name;
    this.age=age;
}

这时我们发现在对象实例化时如果不输入参数,就会报错,这是因为如果我们不写构造器时,系统会自动帮我们生成一个默认的无参构造器,但当我们自己添加构造器时,系统就不会帮我们添加。总之,每一个类都会有一个构造器。当然,一个类也可以有多个构造器,如下、

Student(){};
Student(String name,int age){
    this.name=name;
     this.age=age;
}

这时我们发现,直接初始化对象,不传入参数也可以通过编译。

类的继承

在学习继承前,我们要连接类中的三种成员public、private、protected,这三种成员在继承时有很大的区别,子类中只能继承分类中的public和protected成员,在上面的例子中,如果我们想构造一个属于大学生的类,就可以选择继承于Student,使用Student里面的属性和方法。如下

class CollegeStudent extends Student{
    
}

在Java中,继承不像C++那样有公有继承、私有继承和保护继承,统一都是使用关键字extends,相当于C++中的公有继承,在继承中,有两个很重要的指针,分别为thissuper,this指向当前对象的方法和属性,super指向父类的方法和属性,如下例子

public class test {
    public static void main(String[] args) {
    CollegeStudent Jom=new CollegeStudent();
    Jom.print();
    }
}
class Student{

    String name;
    int age;
    void Show(){
        System.out.println("I'm a student\n");
    }
}
class CollegeStudent extends Student{
    void Show(){
        System.out.println("I'm a college student\n");
    }
    void print(){
        super.Show();
        this.Show();
    }
}

输出结果为:

Java类也是对象 java中对象是类的什么_java_02

在Java中,重写父类的变量和方法后,使用super就可以很好地区分父类和子类。