面向物件(上)
java面向物件學習三條主線
* 1.java類及類的成員:屬性、方法、構造器、代碼塊、內部類
* 2.面向物件的三大特征:封裝,繼承,多型
* 3.其他關鍵字:this,super,static,final,abstract,interface,package,import等
面向物件的三大特征
- 封裝
- 繼承
- 多型
面向物件的思想概述
-
類和物件是面向物件的核心概念
類是對一類事物的描述,是抽象的,概念上的定義
物件是實際存在的該類事物的每個個體,因此稱為實體(instance)
在java中萬事萬物皆物件
屬性和方法
屬性: 對應類中的成員變數
方法:對應類中的成員方法
package com.zx.oop;
/*
* 類和物件的使用
* 1.創建類,設計類成員
* 2.創建類的物件
* 3.通過物件.屬性或物件.方法呼叫
*/
public class PersonTest {
public static void main(String[] args) {
//創建Person類的物件
Person pe=new Person();
//呼叫物件的屬性和方法
//物件.屬性
pe.name="Jack";
pe.isMale=true;
System.out.println(pe.name);
//物件.方法
pe.eat();
pe.sleep();
pe.spke("中國話");
}
}
class Person{
//屬性
String name;
int age = 1;
boolean isMale;
//方法
public void eat() {
System.out.println("人可以吃飯");
}
public void sleep() {
System.out.println("人可以睡覺");
}
public void spke(String language) {
System.out.println("人可以說話,講的話是"+language);
}
}
運行結果:
Jack
人可以吃飯
人可以睡覺
人可以說話,講的話是中國話
類的多個物件之間的關系
在上面代碼基礎的pe.spke("中國話");的后面加上下面代碼
//重新new一個物件
Person pe2=new Person();
System.out.println(pe2.name);//默認值為null
System.out.println(pe2.isMale);//默認值為false
//pe的物件地址賦值給pe3,所以指向的是堆里面的同一個物體
Person pe3=pe;
System.out.println(pe3.name);
pe3.age=99;
System.out.println(pe.age);//所以pe.age也是99
類中的屬性(成員變數)和區域變數
屬性(成員變數)和區域變數
-
相同點:
- 定義變數的格式是一樣的
- 先宣告,后使用
- 變數都有其作用域
-
不同點:
- 成員變數: 在類體內定義的變數稱為成員變數,它的作用域是整個類,也就是說在這個類中都可以訪問到定義的這個成員變數
- 區域變數:宣告在方法內,方法形參,代碼塊內,構造器形參,構造器內部的變數
成員變數:在宣告屬性時,指明其權限,使用權限修飾符 區域變數:不可以使用權限修飾符
類的屬性根據其型別都有自己的默認初始化值
成員變數: 整型(byte,short,int,long) 0 浮點型(float,double) 0.0 字符型(char) 0或'\u0000' 布爾型(boolean) false 參考資料型別:null 區域變數: 必須在宣告的時候初始化值,不然會編譯報錯,形式引數需要呼叫的時候才賦值,所以形參沒有編譯錯誤
記憶體中加載的位置
成員變數:加載到堆空間中(非static) 區域變數:加載到堆疊空間中public class Demo10 { //成員變數 static int num=100; public static void main(String[] args) { System.out.println(num); add(); } //成員方法 public static void add(){ System.out.println("今天賺了"+num); } }public class Demo10 { public static void main(String[] args) { int i,j;//main方法里面定義的區域變數 for (i=1;i<10;i++){ for (j=1;j<=i;j++){ System.out.printf(j+"*"+i+"="+i*j+"\t"); } System.out.printf("\n"); } public void eat(){ String food="雞腿"; System.out.print("李明喜歡吃"+food)//這里的food也是區域變數 } } }方法
package com.zx.oop;
/*
* 類中的方法宣告和使用
* 比如 :Math類:sqrt(),random()
* Scanner類 :nextInt()
*/
public class UserTest {
public static void main(String[] args) {
User user=new User();
user.eat();
String where=user.getNation("中國");
System.out.println(where);
}
}
//用戶類
class User{
//屬性
String name;
int age;
boolean isMale;
/* 方法的宣告
*
* 權限修飾符 回傳值型別 方法名 (形參串列 ){
* 方法體
* }
*
* 回傳值型別:為有或無,有的話就為其回傳的資料型別,無的話寫void
*
* 方法名:屬于識別符號,遵循識別符號的規范和規則,"見名知意"
*
* 形參串列:方法可以宣告0個,1個,或多個形參,以逗號分隔
*
* return關鍵字的作用:
* 使用范圍:方法體內
* 作用:結束方法,針對有回傳值型別,使用"return 資料"方法回傳所要的資料
*
* 方法的使用中:
* 方法中可以呼叫當前類的屬性或方法
* 方法
*
*/
//void 修飾的表示沒有回傳值的方法
public void eat(){
System.out.println("用戶吃飯");
}
public void sleep(int hour){
System.out.println("用戶休息了"+hour+"小時");
}
/*
* String表示回傳的資料型別為String型別,也可以是其他型別,在方法體中用return關鍵字回傳,
* 如果沒有回傳值就用void修飾,通常沒有回傳值的方法就不用return,只能用"return;"結束方法
*/
public String getName() {
return name;
}
//String nation是方法里面的形式引數
public String getNation(String nation) {
String info="我的國籍是"+nation;
return info;
}
}
寫的博客是為了面試的時候快速復習,有的知識點疏漏了也可以通過博客查看,堅持學習,堅持寫博客,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/498687.html
標籤:Java
