1. 程式人生 > 實用技巧 >java入門 (七) 面向物件(一)

java入門 (七) 面向物件(一)

java入門(七)面向物件(一)

  1. 什麼是面向物件
  2. 回顧方法的定義
  3. 回顧方法的呼叫
  4. 類與物件的建立
  5. 構造器詳解
  6. 建立物件記憶體分析
  7. 簡單小結類與物件

什麼是面向物件

面向過程思想:

步驟清晰簡單,第一步做什麼..第二步做什麼..

面對過程適合處理一些較為簡單的問題

面向物件思想:

物以類聚,分類的思維模式,思考問題的首先會解決問題需要哪些分類,然後對這些分類進行單獨思考,最後,才對某個分類下的細節進行面向過程的思索

面向物件適合處理複雜的問題,適合處理需要多人協作的問題

對於描述複雜的事物,為了從巨集觀上把握,從整體上合理分析,我們需要使用面向物件的思路來分析整個系統。但是,具體到微觀操作,仍然需要面向過程的思路去處理

面向物件程式設計(Object-Oriented Programming,OOP)

面向物件程式設計的本質就是:以類的方式組織程式碼,以物件的組織(封裝)資料

抽象

三大特徵:

封裝

繼承

多型

從認識角度考慮是先有物件後有類。物件,是具體的事物。類,是抽象的,是對物件的抽象

從程式碼執行角度考慮是先有類後有物件。類是物件的模板

回顧方法的定義

點選此處挑戰B站視訊:回顧方法的定義

//Demo01類
public class Demo01 {
    //main 方法
    public static void main(String[] args) {

    }

    /*
    修飾符 返回值型別 方法名(...){
          //方法體
          return 返回值;
     }
     */

    //return 結束方法,返回一個結果!
    public String sayHello(){
        return "hello,world";
    }

    public int max(int a, int b){
        return a>b ? a : b;//三元運算子!
    }
}

回顧方法的呼叫

點選跳轉B站視訊:回顧方法的呼叫

public class Demo02 {
    public static void main(String[] args) {
        //例項化這個類 new
        //物件型別  物件名 = 物件值;
        Student student = new Student();
        student.say();
    }

    //static 和類一起載入
//    public static void a(){
//        b.();
//    }
    //類例項化 之後才存在
    //public void b(){}
}
//學生類
public class Student {
    //非靜態方法
    public void say(){
        System.out.println("學生說話了!");
    }
}
public class Demo03 {
    public static void main(String[] args) {
        //實際引數和形式引數的型別要對應
        int add = Demo03.add(1,2);
        System.out.println(add);
    }

    public static int add(int a,int b){
        return a+b;
    }
}
//值傳遞
public class Demo04 {
    public static void main(String[] args) {
        int a = 1;
        System.out.println(a);

        Demo04.change(a);
        System.out.println(a);//1
    }

    //返回值為空
    public static void change(int a){
        a = 10;
    }
}
//引用傳遞:物件  本質還是值傳遞
//物件,記憶體後邊說,這裡暈可以理解
public class Demo05 {
    public static void main(String[] args) {
        Persion persion = new Persion();
        System.out.println(persion.name);

        Demo05.change(persion);
        System.out.println(persion.name);
    }

    public static void change(Persion persion){
        //persion是一個物件,只想的--->Persion persion = new Persion();這是一個具體人,可以改變屬性
        persion.name = ("黑貓警長");
    }

}
//定義一個Persion類,定義一個屬性:name
class Persion{
        String name;//預設值:null
        }

類與物件的建立

類與物件的關係

類是一種抽象的資料型別,它是對某一類事物整體描述/定義,但是並不能代表某一個具體的事物

動物,植物,手機,電腦...

Persion類,Pet類,Car類等,這些類都是用來描述/定義某一類具體的事物應該具備的特點和行為

物件是抽象概念的具體例項

張三就是人的一個具體例項,張三家裡的旺財就是狗的一個具體例項

能夠體現出特點,展現出功能的是具體的例項,而不是一個抽象的概念

建立與初始化物件

使用new關鍵字建立物件

使用new關鍵字建立的時候,處理分配記憶體空間之外,還會給建立好的物件進行預設的初始化以及對類中構造的呼叫

類中的構造器也成為構造方法,是在進行建立物件的時候必須要呼叫的。並且構造器有以下兩個特點:

  1. 必須和類名相同
  2. 必須沒有返回型別,也不能寫void

構造器必須掌握

//學生類
public class Student {
    //屬性
    String name;//null
    int age;//0
    //方法
    public void sttudy(){
        System.out.println(this.name+"學生在學習");
    }
}

//一個專案應該只存在一個main方法
public class Application {
    public static void main(String[] args) {
        //類是抽象的,需要例項化
        //類例項化後會返回一個自己的物件!
        //student物件就是一個Student類的具體例項!

        Student xiaoming = new Student();
        Student xh = new Student();

        xiaoming.name = "小明";
        xiaoming.age = 3;
        System.out.println(xiaoming.name);
        System.out.println(xiaoming.age);


        System.out.println(xh.name);
        System.out.println(xh.age);
        xh.name = "小紅";
        xh.age  = 3;

    }
}

總結:

類是一個模板,通過new關鍵字建立不同的例項

面向物件的本質:以類的方式組織程式碼,以物件的方式(封裝)資料

構造器詳解

類中的構造器也成為構造方法,是在進行建立物件的時候必須要呼叫的。並且構造器有以下兩個特點:**

  1. 必須和類名相同
  2. 必須沒有返回型別,也不能寫void

構造器必須掌握

  1. 使用new關鍵字,本質是在呼叫構造器

    //無參構造器
    public Persion(){
           
    }
    
  2. 有參構造:一旦定義了有參構造,無參構造器必須顯示定義

//有參構造
    public Persion(String name){
        this.name = name;
    }
public class Persion {
    //一個類即使什麼都不寫,它也會存在一個方法
    //顯示的定義構造器

    String name;

    //例項化初始值
    //1.使用new關鍵字,本質是在呼叫構造器
    public Persion(){

    }

    //有參構造:一旦定義了有參構造,無參構造就必須顯示定義
    public Persion(String name){
        this.name = name;
    }
}
public class Application02 {
    public static void main(String[] args) {
        // new 例項化了一個物件
        Persion persion = new Persion("黑貓警長");
        System.out.println(persion.name);
    }
}

總結:

構造器

  1. 必須和類名相同
  2. 必須沒有返回型別,也不能寫void

作用:

  1. new關鍵字本質是呼叫構造方法
  2. 初始化物件的值

注意點:

  1. 定義了有參構造方法,如果想使用無參構造,必須顯示的定義一個無參構造
  2. alt+Insert快捷鍵以後會大量使用

建立物件記憶體分析

理解為主

點選進入建立物件記憶體分析視訊

簡單小結類與物件

  1. 類與物件

    類是一個模板(抽象),物件是具體的例項

  2. 方法

定義,呼叫

  1. 物件的引用

引用型別: 基本型別(8):

物件是通過引用來操作的:棧-->堆

  1. 屬性:欄位filed 成員變數

    預設初始化

    修飾符 屬性型別 屬性名 = 屬性值!

  2. 物件的建立和使用

必須使用new關鍵字創造物件,預設有無參構造器。如果寫了有參構造器,想用無參構造,就必須顯示的寫出無參構造器

  1. 靜態的屬性

    動態的行為

複習筆記參考的學習資料來自B站UP主:狂神說