java入門 (七) 面向物件(一)
java入門(七)面向物件(一)
- 什麼是面向物件
- 回顧方法的定義
- 回顧方法的呼叫
- 類與物件的建立
- 構造器詳解
- 建立物件記憶體分析
- 簡單小結類與物件
什麼是面向物件
面向過程思想:
步驟清晰簡單,第一步做什麼..第二步做什麼..
面對過程適合處理一些較為簡單的問題
面向物件思想:
物以類聚,分類的思維模式,思考問題的首先會解決問題需要哪些分類,然後對這些分類進行單獨思考,最後,才對某個分類下的細節進行面向過程的思索
面向物件適合處理複雜的問題,適合處理需要多人協作的問題
對於描述複雜的事物,為了從巨集觀上把握,從整體上合理分析,我們需要使用面向物件的思路來分析整個系統。但是,具體到微觀操作,仍然需要面向過程的思路去處理
面向物件程式設計(Object-Oriented Programming,OOP)
面向物件程式設計的本質就是:以類的方式組織程式碼,以物件的組織(封裝)資料
抽象
三大特徵:
封裝
繼承
多型
從認識角度考慮是先有物件後有類。物件,是具體的事物。類,是抽象的,是對物件的抽象
從程式碼執行角度考慮是先有類後有物件。類是物件的模板
回顧方法的定義
//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;//三元運算子! } }
回顧方法的呼叫
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關鍵字建立的時候,處理分配記憶體空間之外,還會給建立好的物件進行預設的初始化以及對類中構造的呼叫
類中的構造器也成為構造方法,是在進行建立物件的時候必須要呼叫的。並且構造器有以下兩個特點:
- 必須和類名相同
- 必須沒有返回型別,也不能寫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關鍵字建立不同的例項
面向物件的本質:以類的方式組織程式碼,以物件的方式(封裝)資料
構造器詳解
類中的構造器也成為構造方法,是在進行建立物件的時候必須要呼叫的。並且構造器有以下兩個特點:**
- 必須和類名相同
- 必須沒有返回型別,也不能寫void
構造器必須掌握
-
使用new關鍵字,本質是在呼叫構造器
//無參構造器 public Persion(){ }
-
有參構造:一旦定義了有參構造,無參構造器必須顯示定義
//有參構造
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);
}
}
總結:
構造器
- 必須和類名相同
- 必須沒有返回型別,也不能寫void
作用:
- new關鍵字本質是呼叫構造方法
- 初始化物件的值
注意點:
- 定義了有參構造方法,如果想使用無參構造,必須顯示的定義一個無參構造
- alt+Insert快捷鍵以後會大量使用
建立物件記憶體分析
理解為主
簡單小結類與物件
-
類與物件
類是一個模板(抽象),物件是具體的例項
-
方法
定義,呼叫
- 物件的引用
引用型別: 基本型別(8):
物件是通過引用來操作的:棧-->堆
-
屬性:欄位filed 成員變數
預設初始化
修飾符 屬性型別 屬性名 = 屬性值!
-
物件的建立和使用
必須使用new關鍵字創造物件,預設有無參構造器。如果寫了有參構造器,想用無參構造,就必須顯示的寫出無參構造器
-
類:
靜態的屬性
動態的行為
複習筆記參考的學習資料來自B站UP主:狂神說