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
name
,age
,price
,author
learn()
public
,private
,protected
等通过上面的分析我们知道,所有的类都有一些公共特性,那么我们就定义一个类,来描述这些公共特性,我们暂且把这个类起个类名,叫 Info
其实我们这里的Info类,就是java中的Class,java中的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
的成员
这些数组就是保存类中的字段或者方法的。
我们先看一下JDK中 Class
类的构造函数
就这一个构造函数,还是私有的,所以,我们不能直接new
一个对象了
综上所述,我们知道了