面向对象是一种哲学。
1.Object类就是对象类
我们在学习Java的时候会学到超类和子类。
在众多的类中有个类非常的特殊——Object类。该类是所有的类的超类,是所有类的始祖,所有类都由其扩展而来——这是众多Java编程书籍告诉我们的。
然而,这只能让我们从专业的角度去理解。我们要用面向对象的思考方式去理解它。
Object,英文就可以翻译为“对象”。Object类就是对象类。
顾名思义,对象类是把所有的对象都归入一个类中。
我们平时认为小明是Person类的对象,小红是Person类的对象;飞机是交通工具类的对象,汽车也是交通工具类的对象。
小明,小红——他们的共性是人,于是归类到人这个类中;
飞机,汽车——他们的共性是交通工具,于是归类到交通工具类中。
我们生活中不断地把事物进行归类,于是有了千千万万个类。Java的编程思想就是用人认识事物的方式来构建它的语言形式。
难道小明和飞机之间就没有共性了吗?
当然有——他们的共性就是,他们都是客观的实在。
既然万物之间都有一个最基本的共性,那么,他们便都可以属于一个类。
我们使用Object来表示这个类。
Object翻译成对象,内在意义是——它是客观存在于物质世界的物质。
于是任何物质都是属于物质这个类的——没毛病。
于是所有对象都有作为对象的基本功能——于是Object类的方法可以被所有对象直接使用。
Object类放置于java.lang.Object.
这个Object既可以指Object类,也可以指任何具体的对象。
于是getclass()方法前面可以是任何对象,而这个对象本身就是Object类。
非常地巧妙地把概念和实体结合。
记住,所有对象们都属于一个对象类——Object!
2.Class类
什么事物都可以变成对象来探讨,哪怕是对对象的概念,我们人类依然可以把它变成对象来探讨。
我们发现了一根树枝,两根树枝,我们先用树枝本身来计算事物的量,后来人们发现,能让我们计算好事物数目本质的东西不在树枝上,而是在某种概念上。
于是我们抽象了出了数这个概念,我们直接使用1,2,3.。。。
我们不断地抽象,抽取事物的本质,却发现,事物的本质的本身也是本质。
我们便将类本身也当做一个对象。正如我们把数当成一个概念,但这个概念它是客观存在的。我们便可用数来描述数——1个1,两个2,等等。用概念来描述概念。
我们将所有的类都能被归纳到“Class”这个类中。我们用类来描述所有的类。
Class——就是类的意思。它是所有概念的概念,它是所有类的类。
Class指代任何类本身。当类成为一个对象,这个类与任何引用型数据类型没有任何不同。
于是我们发现——java.lang.Class中的Class,既可以指Class这个“类”本身,也可以指“类对象”这种对象。
Class类的getName()方法的前缀是任何类的类名。
这就是万物皆对象,对象皆有类。