JAVA入門 第四章 面向對象

構造器

反編譯java文件指令: javap fileName

  • 缺省的無參構造器:默認 無參 無代碼

  • 在顯示的寫出之后,可以填寫自定義代碼

  • 主要作用:進行成員屬性的初始化

  • 如果自己寫一個 有參構造器,那么缺省的無參構造器就不再默認提供了

創建對象的過程

  1. 在堆中的永久區(方法區)中查找是否存在 要創建對象的類模版;
  2. 如果沒有,使用類加載器加載該模版;
  3. 如果有,則不用重新加載。保證該模版在永久區中是唯一的
  4. 根據類模版中定義的屬性 在GC區中開辟適當大小的空間
  5. 把此空間全部寫0。目的讓所有屬性都有初始值。
  6. 如果屬性有顯示賦值,則更新該空間中對應的值
  7. 執行構造器方法
  8. 返回內存地址

成員屬性的默認初始值:

數據類型 默認初始值
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:

  1. 將功能、處理、值、數據庫訪問和其他任何可以用java代碼創造的對象進行打包,
  2. 并且其他的開發者可以通過內部的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) 介紹

  1. java.lang

    包含一些Java語言的核心類,如String、Integer、Math、System和Thread,提供常用功能。

  2. java.util

    包含一些 實用工具類,如定義系統特性、接口的集合框架類、使用與日期日歷相關的函數。

  3. java.net

    包含執行與 網絡相關 的操作的類和接口。

  4. java.io

    包含能提供多種 輸入/輸出 功能的類。

  5. java.text

    包含了一些java格式化相關的類

  6. java.sql

    包含了java進行 JDBC數據庫 編程的相關類/接口

  7. java.awt

    包含了構成抽象窗口工具集(abstract window toolkits)的多個類,這些類被用來構建和管理應用程序的圖形用戶界面(GUI)。

  8. java.applet

    包含applet運行所需的一些類。

package 包目錄結構名稱, 包目錄通常是4層

package 機構類型.機構名稱.項目名稱.模塊名稱;

//atguigu.com 通常用域名作為包名.
package com.atguigu.javase.javabean; 

在源文件中一旦使用了package, 作用是

告訴 編譯器 此文件中的所有類在生成.class后, 要把這些文件放在 對應的包目錄 結構中.

注意點 :

  1. 如果使用了package, 在編譯源文件時, 必須加上選項-d ,

    javac -d 目標目錄(通常就是.目錄) 源文件名
    javac空格-d空格.空格.java文件
    
  2. 如果一個類使用了package, 那么這個類在被其他包的其他類使用時, 必須使用這個類的全限定名稱(full qulified name)

    //全限定名是指 包名.子包名.子子包名.子子子子包名.類名;
    //簡單類名 類名
    package com.school.learnjava.test.FileName;
    
  3. 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

這種將程序輸入輸出數據處理,以及數據的展示 分離開來的設計模式,好處:

  1. 使程序結構變的靈活而且清晰,
  2. 同時也描述了程序各個對象間的通信方式,
  3. 降低了程序的耦合性。

方法覆蓋 override

父類中私有方法不能被繼承。

條件:
  1. 方法簽名 必須相同。即 覆蓋方法 和 被重寫方法的方法名稱、參數列表和返回值必須相同。
  2. 覆蓋方法的訪問權限應該 大于或等于 被重寫方法。
  3. 同為非 static 。
  4. 子類方法拋出的異常 不能大于 父類中被重寫方法的異常。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。