时间:2021-05-20
大家都知道Java是一门面向对象编程语言,在Java世界里,万事万物皆对象,那个Java中怎么表示对象呢?Class
我们知道Java中的对象都是Object类的子类,那么今天我们就一起来研究一下Java中的Class的使用。
问一下小问题:类是对象吗?类是谁的对象?答案是:类是对象,是java.lang.Class类的实力对象。
package com.edu.hpu;
public class Test { public static void main(String[] args) { //通过new实例化一个对象 Foo foo = new Foo(); //通过实例化对象的getClass()方法得到Class类的实例 Class c1 = foo.getClass(); //任何一个类都有一个隐含的静态变量class Class c2 = Foo.class; //c1、c2表示了Foo类的类类型(class type) System.out.println(c1 == c2); Class c3 = null; try { //第三种获得类的类类型的方法 c3 = Class.forName("com.edu.hpu.Foo"); } catch (ClassNotFoundException e) { e.printStackTrace(); } System.out.println(c1 == c3); try { //通过类的类类型来创建类的实例对象 Foo c4 = (Foo) c1.newInstance(); c4.start(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } }}class Foo{ public void start(){ System.out.println("Foo类"); }}通过上面的代码大家是不是对于Class有了一个更深入的认识,我们可以通过new关键字来创建类的实例对象,同样可以通过类的类类型来创建类的实例对象,获取类的类类型的方式以上有三种形式,他们得到的类类型只有一个,所以c1==c2==c3:true。
经过上面的简单介绍大家是不是对于Java中的class有了一个更深入的认识,下面我们通过一个小例子为大家介绍一下类类型与类的实例在实际中的使用。
class Offices{ public static void main(String [] args){ if("Word".equals(args[0])){ Word w = new Word(); w.start(); } if("Excel".equals(args[0])){ Excel e = new Excel(); e.start(); } }}大家看一下上面的代码,当我们编译时,是否可以正常通过?这里我们需要说一下编译与运行:编译时刻加载的类是静态加载类;运行时刻加载的类是动态加载类。Class.forName("l类的全称");不仅代表了类类型,而且代表了动态加载类。上面的例子中,Word、Excel我们并不一定用的到,但是当我们编译时,如果Word、与Excel不存在,那么便会出错。所以接下来我们通过类类型动态加载类的方式来实现上面的逻辑。
class Office{ public static void main(String [] args){ try{ Class c = Class.forName(args[0]); OfficeAble oa = (OfficeAble)c.newInstance(); oa.Write(); }catch(Exception e){e.printStackTrace();} }}interface OfficeAble{ public void Write();}class Word implements OfficeAble{ public void Write(){ System.out.println("Word...start..."); }}class Excel implements OfficeAble{ public void Write(){ System.out.println("Excel..Write.."); }}这样我们就可以根据需要动态的增加类,方便我们应用的功能拓展。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
javascript中setTimeout使用指南/*//方法1functionslows(){alert("15S后弹出!");}setTimeout("sl
这里我们使用dnsmasq对应的docker版本docker-dnsmasq。使用指南下载镜像dockerpulldocker-dnsmasq创建最简单的配置/
Docker-clientforpython使用指南:客户端初始化的三种方法importdockerdocker.api()docker.APIClient()
本文实例讲述了Java泛型和Class类用法。分享给大家供大家参考,具体如下:一点睛从JDK1.5之后,Java的Class类增加了泛型功能,从而允许使用泛型来
kotlin基础教程之类和继承类声明使用class关键字声明类,查看其声明格式::modifiers("class"|"interface")SimpleNam