一、面向物件概述
- 面向物件
- 是一種編程思想,是發展到一定階段后產生的
- 我們有程式的撰寫者、執行者轉換為呼叫者、指揮者
- 面向程序
- 編程思想
- 注重自己實作的程序
- 類
- 一組具有相同或者相似屬性、行為事務的統稱
- 是物件的抽象
- 物件
- 現實世界中具體存在的實物
- 是類的具體描述
二、類的創建
- 創建一個類需要關注的點
- 類名
- 這個類的名字
- 屬性
- 這一群物件共有的一些特征
- 可以使用名詞提煉法
- 方法
- 一群物件所共有的行為
- 撰寫成方法
- 目前不用加static
- 類名
package com.qf.cls;
/**
* 創建Dog類
* 抽取狗子的特征,定義為屬性
* 抽取狗子的行為,定義為方法
* @author Dushine2008
*
*/
public class Dog {
// 屬性--品種-哈士奇、年齡-3、名字-道哥、顏色-黑白
String breed;
int age;
String name;
String color;
// 方法
public void eat(String food) {
System.out.println("狗子喜歡吃:" + food);
}
public void sleep(int hour) {
System.out.println("我們家的狗子每天睡覺時長是" + hour);
}
}
三、物件的創建
- 類是物件的模板,可以使用類創建出無數個具體的物件
- 類名 物件名 = new 類名(引數串列);
package com.qf.cls;
public class DogTest {
public static void main(String[] args) {
Dog dog = new Dog();
// 呼叫方法
dog.eat("骨頭");
dog.sleep(8);
// 呼叫屬性,屬性如果沒有提前賦值,得到的是默認值
int age = dog.age;
System.out.println(age);
// 給dog的屬性賦值
dog.breed = "哈士奇";
dog.name = "二哈";
dog.age = 3;
dog.color = "黑白";
// 呼叫dog的屬性
System.out.println("狗子的品種是:" + dog.breed);
System.out.println("狗子的名字是:" + dog.name);
System.out.println("狗子的年齡是:" + dog.age);
System.out.println("狗子的顏色是:" + dog.color);
}
}
四、創建多個物件
- 一個類是多個物件的模板
- 一個類可以創建很多個物件
package com.qf.cls;
public class CarTest {
public static void main(String[] args) {
// 創建物件
Car car = new Car();
// 給物件的屬性賦值
car.brand = "比亞迪*唐";
// 呼叫物件的方法
car.start("搖把");
car.run(200);
Car jili = new Car();
jili.brand = "cheey";
jili.maxSpeed = 220;
jili.start("一鍵啟動");
jili.run(120);
}
}
/**
* Car類
* @author Dushine2008
*
*/
class Car{
// 屬性
String brand;
String color;
int price;
int maxSpeed;
// 方法
public void start(String func) {
System.out.println(brand + "的車子啟動的方式是:" + func);
}
public void run(int speed) {
System.out.println("車子目前的速度是:" + speed);
}
}
創建單個物件的程序

創建多個物件的程序

五、區域變數和實體變數
| 型別 | 區域變數 | 實體變數 |
|---|---|---|
| 定義位置 | 方法內部 | 類中方法外 |
| 存盤位置 | 堆疊記憶體 | 堆記憶體 |
| 默認值 | 無,必須先賦值在使用 | 有默認值,和資料型別有關 |
| 作用范圍 | 整個方法 | 整個類 |
| 生命周期 | 創建到方法執行結束 | 隨著物件創建而創建,物件消失而消失 |
| 命名沖突 | 方法中不能存在重名變數 | 可以和區域變數重名,區域變數優先級高 |
六、實體方法
- 創建物件后可以使用物件呼叫的方法
- 定在類中方法外
- 每一個方法都是獨立的,不能書寫在其他方法中
- 實體方法不能使用static修飾
- 因為使用static修飾的方法成為類方法
6.1 案例
- 物體類--Student
package com.qf.cls;
/**
* 學生類
* 定義了學生的屬性
* 定義了sayHi和show方法
* @author Dushine2008
*
*/
public class Student {
// 屬性
String name;
int age;
String gender;
double score;
/**
* 見面打招呼的方法
* @param word 打招呼的內容
*/
public void sayHi(String word) {
System.out.println("我是一個好學生,我們見面都會說:" + word);
}
/**
* 展示自己資訊的方法
*/
public void show() {
System.out.println("我的名字是:" + name + ",我的今年" + age + ",我是" + gender + ",我這次考試的成績是:" + score);
}
}
- 測驗類TestStudent
package com.qf.cls;
public class TestStudent {
public static void main(String[] args) {
// 創建學生物件stu01
Student stu01 = new Student();
stu01.name = "張飛";
stu01.gender = "漢子";
stu01.age = 16;
stu01.score = 33;
stu01.sayHi("我乃燕人張翼德");
stu01.show();
// 創建學生物件stu02
Student stu02 = new Student();
stu02.name = "關羽";
stu02.gender = "壯士";
stu02.age = 17;
stu02.score = 88;
stu02.sayHi("打死你個鱉孫!!!");
stu02.show();
}
}
七、方法的多載
- 在同一個類中出現了名字相同的方法
- 他們的引數串列不同
- 和回傳值、修飾符無關
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/265289.html
標籤:其他
