java面向物件及值傳遞和引用傳遞
阿新 • • 發佈:2022-01-04
java面向物件
java的核心是面向物件(oop)
屬性+方法=類
java:
- 面向過程:(線性)步驟簡單,第一步做XX,第二步XX...適合處理一些較為簡單的問題。
- 面向物件:分類的思維:先思考解決問題需要哪些類-->對這些類進行單獨思考-->對某個分類下的細節進行面向過程的分析,適合處理複雜與多人協作的問題。
對於描述複雜事物,為了從巨集觀上把握,從整體上合理分析,需要使用面向物件思路來分析整個系統。但是,具體到微觀操作,仍需要面向過程的思路去處理。
面向物件程式設計的本質:以類的方式組織程式碼,以物件的組織封裝資料
抽象的思想
三大特性:
- 封裝
- 繼承
- 多型
從認識論角度:先有物件後有類,物件是具體事物。類是抽象的,是對物件的抽象。
從程式碼執行角度:先有類再有物件,類是物件的模板。
java方法呼叫
-
靜態方法:含static修飾的方法,通過類名.方法名呼叫
-
非靜態方法:通過例項化這個類來呼叫
package com.yuanyu.study; public class Oop { public static void main(String[] args) { Oop.say(); //靜態方法直接 類名.方法名呼叫 Oop oop=new Oop(); //非靜態方法先將類例項化再呼叫 oop.listen(); } public static void say(){ //靜態方法(static) System.out.println("hello"); } public void listen(){ //非靜態方法 System.out.println("I can listen."); } }
hello
I can listen.
靜態方法與靜態方法可以直接相互呼叫
非靜態方法和非靜態方法可以直接相互呼叫
而靜態方法與非靜態方法不能直接相互呼叫
java值傳遞與引用傳遞
java是值傳遞
值傳遞:
package com.yuanyu.study; public class Oop { public static void main(String[] args) { int a=1; System.out.println(a); //1 Oop.change(a); System.out.println(a); //1 /*Oop oop=new Oop(); oop.change(a); System.out.println(a); //1 */ } //返回值為空 public static void change(int a){ a=10; } /*public void change(int a){ a=10; } */ }
引用傳遞:傳遞的是物件,本質還是值傳遞
package com.yuanyu.study;
public class Oop {
public static void main(String[] args) {
Student student=new Student(); //例項化Student類
System.out.println(student.name); //null
Oop.change(student);
System.out.println(student.name); //Sue
}
public static void change(Student student){
//student是一個類
student.name="Sue";
}
}
//定義了一個Student類,有一個屬性:name
class Student{
String name;
}