構造器
反編譯java文件指令: javap fileName
缺省的無參構造器:默認 無參 無代碼
在顯示的寫出之后,可以填寫自定義代碼
主要作用:進行成員屬性的初始化
如果自己寫一個 有參構造器,那么缺省的無參構造器就不再默認提供了
創建對象的過程
- 在堆中的永久區(方法區)中查找是否存在 要創建對象的類模版;
- 如果沒有,使用類加載器加載該模版;
- 如果有,則不用重新加載。保證該模版在永久區中是唯一的
- 根據類模版中定義的屬性 在GC區中開辟適當大小的空間
- 把此空間全部寫0。目的讓所有屬性都有初始值。
- 如果屬性有顯示賦值,則更新該空間中對應的值
- 執行構造器方法
- 返回內存地址
成員屬性的默認初始值:
數據類型 | 默認初始值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0 |
float | 0.0F |
double | 0.0D |
boolean | false |
char | '0a0000' |
引用類型 | null |
四種訪問權限修飾符
-
修飾類的成員(屬性) 定義前,用來限定 對象 對 該類成員的訪問權限。
修飾符 類內部 同一個包 子類 任何地方 private Y default(缺省) Y Y protected Y Y Y public Y Y Y Y -
修飾 類 時,只可以用 public 和 default(缺省);
|修飾符|同一個包|子類|任何地方
|:--|:--|:--|:--|:--
|default(缺省)|Y
|public|Y|Y|Y
JavaBean
JavaBean是一種Java語言寫成的可重用組件。
所謂javaBean,是指符合如下標準的Java 類:
- 類是公共的
- 有一個無參的公共的構造器
- 有屬性,且有對應的get、set方法
用戶可以使用JavaBean:
- 將功能、處理、值、數據庫訪問和其他任何可以用java代碼創造的對象進行打包,
- 并且其他的開發者可以通過內部的JSP頁面、Servlet、其他JavaBean、applet程序或者應用來使用這些對象。
用戶可以認為JavaBean提供了一種 隨時隨地的復制和粘貼 的功能,而不用關心任何改變。
public class TestJavaBean {
//屬性一般定義為private
private String name;
private int age;
public TestJavaBean() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
JDK中的 主要的包(package) 介紹
-
java.lang
包含一些Java語言的核心類,如String、Integer、Math、System和Thread,提供常用功能。
-
java.util
包含一些 實用工具類,如定義系統特性、接口的集合框架類、使用與日期日歷相關的函數。
-
java.net
包含執行與 網絡相關 的操作的類和接口。
-
java.io
包含能提供多種 輸入/輸出 功能的類。
-
java.text
包含了一些java格式化相關的類
-
java.sql
包含了java進行 JDBC數據庫 編程的相關類/接口
-
java.awt
包含了構成抽象窗口工具集(abstract window toolkits)的多個類,這些類被用來構建和管理應用程序的圖形用戶界面(GUI)。
-
java.applet
包含applet運行所需的一些類。
package 包目錄結構名稱, 包目錄通常是4層
package 機構類型.機構名稱.項目名稱.模塊名稱;
//atguigu.com 通常用域名作為包名.
package com.atguigu.javase.javabean;
在源文件中一旦使用了package, 作用是
告訴 編譯器 此文件中的所有類在生成.class后, 要把這些文件放在 對應的包目錄 結構中.
注意點 :
-
如果使用了package, 在編譯源文件時, 必須加上選項-d ,
javac -d 目標目錄(通常就是.目錄) 源文件名 javac空格-d空格.空格.java文件
-
如果一個類使用了package, 那么這個類在被其他包的其他類使用時, 必須使用這個類的全限定名稱(full qulified name)
//全限定名是指 包名.子包名.子子包名.子子子子包名.類名; //簡單類名 類名 package com.school.learnjava.test.FileName;
package語句必須位于源文件中的第一行
純手動運行帶包項目
對象關聯 :
一個類的對象想要頻繁地使用另外一個對象,如何關聯? 在本類中把另外一個類的對象作為屬性即可
一旦作為屬性, 需要處理全參構造, 添加get/set, 處理say方法
MVC設計模式
- 模型層 model 主要處理數據
數據對象封裝 model.bean/domain
數據庫操作類 model.dao
數據庫 model.db
- 控制層 controller 處理業務邏輯
應用界面相關 controller.activity
存放fragment controller.fragment
顯示列表的適配器 controller.adapter
服務相關的 controller.service
抽取的基類 controller.base
- 視圖層 view 顯示數據
相關工具類 view.utils
自定義view view.ui
這種將程序輸入輸出、數據處理,以及數據的展示 分離開來的設計模式,好處:
- 使程序結構變的靈活而且清晰,
- 同時也描述了程序各個對象間的通信方式,
- 降低了程序的耦合性。
方法覆蓋 override
父類中私有方法不能被繼承。
條件:
- 方法簽名 必須相同。即 覆蓋方法 和 被重寫方法的方法名稱、參數列表和返回值必須相同。
- 覆蓋方法的訪問權限應該 大于或等于 被重寫方法。
- 同為非 static 。
- 子類方法拋出的異常 不能大于 父類中被重寫方法的異常。