国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Java > 正文

Java基礎(chǔ)類Class使用指南

2019-11-26 14:43:07
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

大家都知道Java是一門面向?qū)ο缶幊陶Z(yǔ)言,在Java世界里,萬(wàn)事萬(wàn)物皆對(duì)象,那個(gè)Java中怎么表示對(duì)象呢?Class

我們知道Java中的對(duì)象都是Object類的子類,那么今天我們就一起來(lái)研究一下Java中的Class的使用。

問(wèn)一下小問(wèn)題:類是對(duì)象嗎?類是誰(shuí)的對(duì)象?答案是:類是對(duì)象,是java.lang.Class類的實(shí)力對(duì)象。

package com.edu.hpu;

public class Test {    public static void main(String[] args) {    //通過(guò)new實(shí)例化一個(gè)對(duì)象    Foo foo = new Foo();    //通過(guò)實(shí)例化對(duì)象的getClass()方法得到Class類的實(shí)例    Class c1 = foo.getClass();    //任何一個(gè)類都有一個(gè)隱含的靜態(tài)變量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 {      //通過(guò)類的類類型來(lái)創(chuàng)建類的實(shí)例對(duì)象      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類");  }}

  通過(guò)上面的代碼大家是不是對(duì)于Class有了一個(gè)更深入的認(rèn)識(shí),我們可以通過(guò)new關(guān)鍵字來(lái)創(chuàng)建類的實(shí)例對(duì)象,同樣可以通過(guò)類的類類型來(lái)創(chuàng)建類的實(shí)例對(duì)象,獲取類的類類型的方式以上有三種形式,他們得到的類類型只有一個(gè),所以c1==c2==c3:true。

  經(jīng)過(guò)上面的簡(jiǎn)單介紹大家是不是對(duì)于Java中的class有了一個(gè)更深入的認(rèn)識(shí),下面我們通過(guò)一個(gè)小例子為大家介紹一下類類型與類的實(shí)例在實(shí)際中的使用。

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();    }  }}

  大家看一下上面的代碼,當(dāng)我們編譯時(shí),是否可以正常通過(guò)?這里我們需要說(shuō)一下編譯與運(yùn)行:編譯時(shí)刻加載的類是靜態(tài)加載類;運(yùn)行時(shí)刻加載的類是動(dòng)態(tài)加載類。Class.forName("l類的全稱");不僅代表了類類型,而且代表了動(dòng)態(tài)加載類。上面的例子中,Word、Excel我們并不一定用的到,但是當(dāng)我們編譯時(shí),如果Word、與Excel不存在,那么便會(huì)出錯(cuò)。所以接下來(lái)我們通過(guò)類類型動(dòng)態(tài)加載類的方式來(lái)實(shí)現(xiàn)上面的邏輯。

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..");  }}

  這樣我們就可以根據(jù)需要?jiǎng)討B(tài)的增加類,方便我們應(yīng)用的功能拓展。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 镇平县| 依兰县| 阳春市| 盖州市| 临潭县| 龙门县| 巴青县| 邵阳县| 额敏县| 象山县| 乐清市| 石嘴山市| 天津市| 贵南县| 连江县| 娄烦县| 江川县| 莱州市| 贺兰县| 东明县| 昆明市| 哈巴河县| 定远县| 蓬安县| 大化| 湟源县| 随州市| 平阴县| 米林县| 左云县| 泗水县| 临颍县| 龙州县| 韶山市| 基隆市| 奉化市| 深州市| 开化县| 漳平市| 伊通| 犍为县|