我们都知道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这个对象中的方法时,发现输出结果为
并不是我们想要输出实例化对象正在读书的结果,那么,怎么给类型的属性赋值呢,这里我们可以使用带参构造器,在对象示例化时就给对象的相应属性赋值。
在类的方法中添加如下代码
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++中的公有继承,在继承中,有两个很重要的指针,分别为this和super,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中,重写父类的变量和方法后,使用super就可以很好地区分父类和子类。