學生試卷中的題目有要提交截圖的,也有要提交文件的,為了方便學生考試,允許單獨交或者嵌入Word中提交,那麼事後如何整理學生的答案?單獨提交的比較方便,直接掃描文件名匹配名字後放入指定文件夾即可。但是嵌入到Word中的圖片和文件怎麼提取出來呢? 現有如下需求:提取出一個Word文檔中所有的圖片(png ...
轉自:
http://www.java265.com/JavaCourse/202206/3755.html
下文筆者講述java中內部類的簡介說明內部類簡介
我們將定義在類中的類稱之為“內部類”例:
public class User{ //內部類 public class run{ } }
內部類的使用場景及功能
當一個對象內部 還擁有一個完整的結構時,內部結構同時為外部結構服務 那麼內部完整結構,可使用內部類設計 內部類註意事項: 1.內部類通常可以方便訪問外部類的成員,包括私有的成員 2.內部類提供了更好的封裝性 內部類本身就可以用private protectecd等修飾 封裝性可以做更多控制。
內部類的分類
靜態內部類 成員內部類(非靜態內部類) 局部內部類 匿名內部類
靜態內部類簡介
有static修飾 屬於外部類本身 如: public class outer{ //靜態內部類 public class static inner{ } } 靜態內部類創建對象的格式 外部類名.內部類名 對象名 = new 外部類名.內部類名();例:
public class user { public static String name = "劉暢"; public static class score{ private String name ; private int price; public score() { } public score(String name, int price) { this.name = name; this.price = price; } public void buy(){ System.out.println(user.name+"購買了"+this.name); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } } } //main方法 user.score m = new user.score("貓貓",300); m.buy();
靜態內部類可以訪問外部類的靜態成員 但是不能訪問外部類的實例成員 因為實例成員是由對象創建的 內部類無法找到 除非在內部類中new一個對象 進行間接的訪問
成員內部類簡介
無static修飾 屬於外部類的對象 //格式 public class outer{ public class inner{ } } 成員內部類創建對象的語法: 外部類名.內部類名 對象名 = new 外部構造器.new內部構造器(); outer.inner in = new outer().new inner();例:
public class user { public static String name1 = "劉暢"; private String name2 ; public class score{ private String name ; private int price; public void buy(){ System.out.println(user.name1+"購買了"+this.name); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } } } //main方法 user.score m = new user().new score(); m.setName("奧特曼"); m.buy();
局部內部類簡介
局部內部類放在方法、代碼塊、構造器等執行體中 局部內部類的類文件名: 外部類$N內部類.class 例:在方法test中定義類 class 類名{ }
匿名內部類
將定義在方法中,代碼塊中等 並且沒有類名,我們將這種類稱之為“匿名內部類” 匿名內部類的用途: 方便創建子類對象,簡化代碼編寫 new 類名|抽象類名|或者介面名(){ 重寫方法; };