搞懂 Java 的大 Class
class Student{
String name;
int age;
public void learn(){System.out.println("正在学习");
}
public int getAge(){return age;}
public void hello(String message){System.out.println(message);
}
}
class Book{
private float price;
private String author;
}
所以,不论是下面的 Student
,Book
类,还是 Java 语言中的自带类比方 String
类
所有的类,都有上面的一些共性:
- 所有的类,都有一个类名:比方下面的
Student
,Book
,String
类,再加上包名,如果包名是 com.test , 那么这些类的名字就是com.test.Student
,com.test.Book
,com.test.String
- 所有的类,都有 0 个或者多个字段,比方下面的
name
,age
,price
,author
- 所有的类,都有 0 个或者多个办法,比方下面的
learn()
- 所有的类,都有修饰符,比方
public
,private
,protected
等 - 所有的类,都有 0 个或者多个静态方法
- 等等等
Class 到底是什么?
通过下面的剖析咱们晓得,所有的类都有一些公共个性,那么咱们就定义一个类,来形容这些公共个性,咱们暂且把这个类起个类名,叫 Info
其实咱们这里的 Info 类,就是 java 中的 Class,java 中的 Class
其实就是个一般的类而已,和其它的类没什么不一样的。不信看看 Class
定义
Class 就是一个一般的类,这个类形容的是所有的类的公共个性
Class 类能干什么?
既然下面咱们晓得了,所有的类都是有公共个性的,咱们定义了一个叫 Class
的类来形容这些公共个性
那么是不是所有的类的办法,所有的类的字段,是不是也有公共的个性?
答案 是的
是不是有点迷糊? 不要怕,很简略,举个例子就晓得了。
还是下面的 Student
,Book
类,
- 所有的类的字段,都有名字。
比方Book
类中的price
字段,它的名字是不是"price"
- 所有的类的字段,都有类型。
比方Book
类中的price
字段,它的类型是float
- 所有的类的字段,都有修饰符。
比方Book
类中的price
字段,它的修饰符是private
所以这些类的字段公共的个性,咱们也能够定义一个类来形容,这个类就是 Field
咱们看一下 JDK 中对于 Field 的定义
是不是和 Class
类一样,Field
类也是一个一般的类
同理,类中所有的办法,是不是也有公共的个性?
答案:是的
- 所有的类的办法,都有办法名
比方Student
类中的getAge()
办法,它的办法名是"getAge"
- 所有的类的办法,都有返回值类型
比方Student
类中的getAge()
办法,它的返回值是int
类型 - 所有的类的办法,都有参数。(无参数也是算是非凡的参数吧)
比方Student
类中的hello(String message)
办法,有一个参数,参数的类型是值是String
类型 - 所有类的办法,都有润饰符号。
比方Student
类中的getAge()
办法,它润饰符号是public
所以这些类的办法的公共的个性,咱们也能够定义一个类来形容,这个类就是 Method
咱们看下 JDK 中的定义
由下面能够,那么 Class
类就是通过 Field
和Method
来形容类中的字段和办法
咱们来看一下 JDK 中 Class
类中,对于 Field 和 Method
的成员
这些数组就是保留类中的字段或者办法的。
Class 如何应用?
咱们先看一下 JDK 中 Class
类的构造函数
就这一个构造函数,还是公有的,所以,咱们不能间接 new
一个对象了
综上所述,咱们晓得了
- Class 就是一个一般的类,就是用来形容一个类的信息的(比方类有几个字段,几个办法,名字叫什么等等)
- 能够通过 3 种办法来获取 Class 的对象,也就是某个类的字节码
- 有个某个类的字节码当前,咱们就晓得晓得这个类的许多信息了
- Class 个别是在运行时应用,你只有通知我类名,我就能够晓得这个类中有多少办法,有多少字段,怎么调用等等
- Filed,Method(还有其它的,咱们只说这 2 个),别离是形容类的字段和类的办法的