1)在面向对象的世界里,万事万物皆对象。
java语言中,静态的成员、普通数据类型类是不是对象呢?
类是谁的对象呢?
类是对象,类是java.lang.Class类的实例对象
2 )这个对象到底如何表示?
There is a class named CIass
通过以下代码解释
1、foo1 是 Foo 的一个实例对象
2、Foo 是Class 的一个实例对象,但是不能直接 new 创建,因为 Class 类的构造方法是 private 类型的,只能由虚拟机创建。
查看 Class 类的源码
但是我们可以由以下三种方法创建 Class 的实例对象,即 Foo 类的类类型(class type)
(1) 方式一
(2) 方式二
(3) 方式三
3、获得了类类型,我们就能创建对象了,而不需要使用 “new 一个对象” 啦
参考慕课网
java语言中,静态的成员、普通数据类型类是不是对象呢?
类是谁的对象呢?
类是对象,类是java.lang.Class类的实例对象
2 )这个对象到底如何表示?
There is a class named CIass
通过以下代码解释
- /**
- * @Author: 言曌
- * @Date: 2017/11/6
- * @Time: 下午10:00
- */
- public class Demo {
- public static void main(String args[]) {
- Foo foo1 = new Foo();
- //第一种表示方式--->实际在告诉我们任何一个类都有一个隐含的静态成员变量class
- Class c1 = Foo.class;
- System.out.println(c1.getName());
- //第二种表示方法
- Class c2 = foo1.getClass();
- //c1和c2都是父类的类类型
- System.out.println(c1==c2);
- /*官网 c1 ,c2 表示了Foo类的类类型(class type)
- * 万事万物皆对象,
- * 类也是对象,是Class类的实例对象
- * 这个对象我们称为该类的类类型
- *
- */
- //第三种的表达方式
- Class c3 = null;
- try {
- c3 = Class.forName("practive.Class.Foo");
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- System.out.println(c2==c3);
- //我们完全可以通过类的类类型来创建类的的对象,通过c1/c2/c3来创建Foo
- try {
- Foo foo = (Foo) c1.newInstance();//需要有无参数的构造方法
- } catch (InstantiationException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- foo1.print();
- }
- }
- class Foo {
- public void print() {
- System.out.println("print......");
- }
- }
1、foo1 是 Foo 的一个实例对象
2、Foo 是Class 的一个实例对象,但是不能直接 new 创建,因为 Class 类的构造方法是 private 类型的,只能由虚拟机创建。
查看 Class 类的源码
但是我们可以由以下三种方法创建 Class 的实例对象,即 Foo 类的类类型(class type)
(1) 方式一
- Class c1 = Foo.class;
(2) 方式二
- Class c2 = foo1.getClass();
(3) 方式三
- Class c3 = null;
- try {
- c3 = Class.forName("practive.Class.Foo");
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
3、获得了类类型,我们就能创建对象了,而不需要使用 “new 一个对象” 啦
- //我们完全可以通过类的类类型来创建类的的对象,通过c1/c2/c3来创建Foo
- try {
- Foo foo = (Foo) c1.newInstance();//需要有无参数的构造方法
- } catch (InstantiationException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
参考慕课网
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏