什么是類和對象?
類:類就是我們經常看見的class關鍵字,類有一點抽象,因為它具體的內容是需要通過對象來實現的。
對象:對象是類的一個實例。
例子:
類 等於 藍圖 對象 等於 藍圖的最終產物
比如說:手機
-
首先肯定現有藍圖(類)
-
然后才有藍圖的最終產物(對象)
這也代表二者缺一不可
類(class)
-
類的創建
class 類名稱{
成員變量
成員方法
}
-
類的內部結構:
-
成員變量
-
成員方法
-
成員變量
成員變量其實就是普通的變量,但是我們不會立刻取賦值。
格式:變量類型 變量名稱;
成員方法(后面深入講解)
成員方法是一個封裝起來的功能。
目前格式:
public void 方法名稱(){
//具體的代碼...
}
對象
-
對象的結構:
-
導包:關鍵字 import 包名稱.類名稱;
什么是導包?
導包就是把你要用的類的路徑拿過來。
如果類和對象在同一個包下,則可以省略導包
-
創建
類名稱 對象名 = new 類名稱();
-
使用
-
成員變量
對象名.成員變量名;
賦值:
對象名.成員變量名 = 數據值;
-
成員方法
對象名.成員方法名();
-
-
代碼演示
//1.導包:不需要,因為在同一個包下
public class main {
public static void main(String[] args) {
// 2.創建:類名稱 對象名 = new 類名稱();
Person person = new Person();
/*
使用:
- 成員變量
對象名.成員變量名;
賦值:
對象名.成員變量名 = 數據值;
- 成員方法
對象名.成員方法名();
*/
String name = person.name;
System.out.println(name);
//或者
System.out.println(person.name);
/*
賦值:
對象名.成員變量名 = 數據值;
*/
person.name = "茶仙°";
System.out.println(person.name);
person.age = 1;
/*
- 成員方法
對象名.成員方法名();
*/
person.show();
}
}
class Person{
/*
成員變量
格式:變量類型 變量名稱;
*/
String name;
int age;
/*
成員方法
格式:
public void 方法名稱(){
• //具體的代碼...
}
*/
public void show(){
System.out.println("我叫:" + name + ",我" + age + "歲了");
}
}
注意事項
每new一次對象就代表創建了一次對象,每一個對象都是獨立的。
例子:
//1.導包:不需要,因為在同一個包下
public class main{
public static void main(String[] args){
//2.創建對象
Person person = new Person();//創建了一個對象
Person person2 = new Person();//創建了兩個對象
Person person3 = new Person();//創建了三個對象
Person person4 = new Person();//創建了四個對象
Person person5 = new Person();//創建了五個對象
}
}
class Person{
//創建成員變量
String name;
int age;
//創建成員方法
public void show(){
System.out.println("我叫"+name+",我"+age+"歲了");
}
}成員變量也可以是對象,或者數組。
class Animal{
//成員變量
String name;
int age;
String color;
}
class dog{
//成員變量
String name;
int age;
//成員類
Animal ani;
//成員數組
int[] arr;
}
成員方法(方法)
什么是成員方法?
成員方法也可以叫做方法,方法是一個封裝的功能,我們可以通過調用來使用。
-
方法的好處:當我們需要重復寫一些功能的時候,這時候把功能寫到方法里,之后只要調用就行,不需要重復的寫功能。
-
成員方法完整定義格式
修飾符(public) 返回值類型 方法名稱(參數類型 參數名稱){
//具體的功能
return 返回值;
}
-
解析
-
修飾符:權限的大小(后面細講)
-
返回值類型:代表方法有沒有返回值,如果方法沒有:void,並且return和返回值不需要寫。
-
方法名稱:取一個名字給方法
-
參數類型和參數名稱:方法內部功能需要的材料,我們也把:參數類型和參數名稱稱為“ 參數列表 ”
-
return:
作用一:結束方法
作用二: 把返回值還給調用處
【調用處】:調用方法的代碼,並且調用方法的代碼需要創建一個變量來接收返回值。
-
返回值:具體功能的最終結果。
-
-
創建方法的三要素
-
返回值類型
-
方法名稱
-
參數列表
-
-
解析代碼
class Person{
//成員變量
String name;
int age;
//成員方法
public void show(){
System.out.println("我叫"+name+",我"+age+"歲了");
}
}-
三要素:
-
返回值類型:void(代表沒有)
-
方法名稱:show
-
參數列表:沒有
-
-
-
方法比較
-
有返回值類型和沒有返回值類型
public class main {
public static void main(String[] args) {
main main = new main();
//調用方法的時候需要【接收】
//有返回值類型,接收:int sum = main.sum();
int sum = main.sum();
//沒有返回值類型,傳入參數:int sum = main.sum(1,1);
main.sum2(1,2);
}
/*
創建方法的三要素:
返回值類型:int
方法名稱:sum
參數列表:int a, int b
*/
//有返回值類型
public int sum(){
int result = 1 + 1;
return result;
}
/*
創建方法的三要素:
返回值類型:void
方法名稱:sum2
參數列表:沒有
*/
//沒有返回值類型
public void sum2(){
int result = 2 + 2;
System.out.println(result);
}
} -
有參數和沒參數
public class main {
public static void main(String[] args) {
main main = new main();
//調用方法的時候需要【接收】和【傳入參數】
//有參數
int resultOfSum = main.sum(1,1);
System.out.println("結果" + myNameIs);
/*
接收:int resultOfSum = main.sum();
傳入參數:int resultOfSum = main.sum(1,1);
*/
//沒參數
System.out.println("結果:"+main.sum2());
}
/*
創建方法的三要素:
返回值類型:void
方法名稱:sum
參數列表:int a, int b
*/
//有參數
public void sum(int a, int b){
int result = a + b;
return result;
}
/*
創建方法的三要素:
返回值類型:void
方法名稱:sum2
參數列表:沒有
*/
//沒參數
public void sum2(){
int result = 2,2;
return result;
}
} -
有參數 沒有返回值類型 和 沒參數 有返回值類型
public class main {
public static void main(String[] args) {
main main = new main();
//調用方法的時候需要【傳入參數】
//有參數 沒有返回值類型
main.sum("茶仙°");
//沒參數 有返回值類型
String name = main.sum2();
System.out.println("我叫"+ name);
}
/*
創建方法的三要素:
返回值類型:void
方法名稱:sum
參數列表:String name
*/
public void sum(String name){
System.out.println("我叫"+name);
}
/*
創建方法的三要素:
返回值類型:String
方法名稱:sum2
參數列表:沒有
*/
public String sum2(){
String myName = "茶仙°2";
return myName;
}
}
-
-
方法注意事項
-
返回值要和返回值類型保持一致!
-
方法的返回值類型和參數也是可以有“類” 和 “數組”
-
方法不能嵌套
-
如果有多個參數需要用 , 來隔開。
-
遞歸方法
-
什么是遞歸方法?
遞歸方法就是一種方法循環,但是這種方法循環內部是需要有參數、判斷和返回值。
-
遞歸方法代碼
public class main{
public static void main(String[] args){
main main = new main();
int resultOfFactorial = main.factorial(5);
}
}
class test{
//遞歸方法
public int factorial(int n){//有參數
//判斷
if(n == 1){
return 1
}else{
return factorial(n - 1);
}
}
}
方法重載
-
什么是方法重載?
方法重載是一個屬於方法到規則,規則:同名不同參數
-
代碼演示
public class main{
public static void main(String[] args){
}
public void sum(int a, int b){
int result = a+b;
System.out.println(result);
}
public void sum(int a, int b, int c){
int result = a+b+c;
System.out.println(result);
}
}
成員變量和局部變量的區別
-
定義的位置不一樣【重點】 局部變量:在方法的內部 成員變量:在方法的外部,直接寫在類當中
-
-
默認值不一樣【重點】 局部變量:沒有默認值,如果要想使用,必須手動進行賦值 成員變量:如果沒有賦值,會有默認值,規則和數組一樣
什么是作用域?
作用域是代碼執行的范圍。
它的范圍就是 {} 內部
-
代碼演示
public class main{
public static void main(String[] args){
}
}
class test{
//作用域:{}
{
int num = 1;
public void showNum(){
System.out.println(num);
}
}
//System.out.println(num);
} -