三.JAVA類(學起來是真的累)
阿新 • • 發佈:2020-08-09
JAVA類
JAVA中類名的首字線大寫
一個完整的類如下:
package 包名:
class 類名 extends 父類 implements 介面名{
成員變數:
構造方法:
成員方法:
}
成員方法的定義
public 返回資料型別 方法名 (引數列表){
語句;//方法(函式)主體
}
1 public class day02 { 2 public static void main(String []args) { 3 //建立了一個Mymath的物件 4 Mymath mymath1=new Mymath(); 5 //呼叫mymath類裡面的speack方法 6 mymath1.speack(); 7 //呼叫可以傳入引數的計算方法 8 mymath1.jiSuan(10); 9 //呼叫計算兩個數和的方法 10 mymath1.add(10, 10); 11 } 12 } 13 14 15 class Mymath{ 16 //以下我們稱之為成員變數或者叫成員屬性 17 int age; 18 String nameString; 19 String colorString; 20 //沒有返回數就用void,請注意:方法名的首字母是小寫的21 //以下就是成員方法 22 public void speack() { 23 System.out.println("我是一個好人"); 24 } 25 //帶引數的成員方法 26 public void jiSuan(int n) { 27 int a=0; 28 for (int i = 0; i <=n; i++) { 29 a=a+i; 30 } 31 System.out.println("從0加到"+n+"結果是:"+a); 32 }33 //計算兩個數的和的方法 34 public void add(int num1,int num2) { 35 int rue=0; 36 rue=num1+num2; 37 System.out.println(num1+"+"+num2+"="+rue); 38 } 39 }
類的成員方法,構造方法,成員變數
1 public class day02 { 2 public static void main(String []args) { 3 //建立一個computer的物件 4 Computer c1=new Computer(); 5 //建立了一個Mymath的物件 6 Mymath mymath1=new Mymath(c1,23,"測試","紅色"); 7 //呼叫mymath類裡面的speack方法 8 mymath1.speack(); 9 //呼叫可以傳入引數的計算方法 10 mymath1.jiSuan(10); 11 //呼叫計算兩個數和的方法 12 mymath1.add(10, 10); 13 //呼叫有返回型別的方法 14 //在呼叫某個成員方法的時候,給出的具體數值的個數和型別要相匹配 15 System.out.println("P1="+mymath1.add2(30, 3.1f)); 16 //建構函式的呼叫方法 17 System.out.println(mymath1.teall); 18 19 mymath1.computer.off(); 20 } 21 } 22 23 24 class Mymath{ 25 //以下我們稱之為成員變數或者叫成員屬性 26 int age; 27 String nameString; 28 String colorString; 29 Computer computer; 30 static int teall=0; 31 //以下是構造方法 32 public Mymath(Computer computer,int age,String nameString,String colorString) { 33 this.age=age; 34 this.nameString=nameString; 35 this.colorString=colorString; 36 this.computer=computer; 37 } 38 //沒有返回數就用void,請注意:方法名的首字母是小寫的 39 //以下是成員方法 40 public void speack() { 41 System.out.println("我是一個好人"); 42 } 43 //帶引數的成員方法 44 public void jiSuan(int n) { 45 //int a=0; 46 for (int i = 0; i <=n; i++) { 47 teall=teall+i; 48 } 49 System.out.println("從0加到"+n+"結果是:"+teall); 50 } 51 //計算兩個數的和的成員方法 52 public void add(int num1,int num2) { 53 int rue=0; 54 rue=num1+num2; 55 System.out.println(num1+"+"+num2+"="+rue); 56 } 57 //計算兩個數的和,並且反結果返回給呼叫它的函式 58 //帶返回的值,返回的是什麼型別的值就寫什麼型別的值 59 public float add2(int num1,float num2) { 60 return num1+num2; 61 } 62 } 63 class Computer{ 64 int money; 65 String nameString; 66 String pipaiString; 67 String typeString; 68 69 public void off(){ 70 System.out.println("開啟"); 71 } 72 }
類的多型,繼承
1 public class day05 { 2 public static void main(String []args) { 3 /*Ccat ccat=new Ccat(); 4 ccat.cry(); 5 Ddog ddog=new Ddog(); 6 ddog.cry();*/ 7 //多型 8 /*Animal animal=new Ccat(); 9 animal.cry(); 10 animal=new Ddog(); 11 animal.cry()/*/ 12 Master master=new Master(); 13 master.feed(new Dog(), new Bone(),new Wanj()); 14 master.feed(new Ccat(), new Fish(),new Wanj()); 15 } 16 } 17 //定義一個人類 18 class Master 19 { 20 public void feed(Animal an,Food fn,Wanj wn) { 21 an.cry(); 22 fn.showName(); 23 wn.showNnme(); 24 } 25 } 26 //定義一個玩具類 27 class Wanj 28 { 29 String nameString; 30 public void showNnme() { 31 System.out.println("我不知道是什麼玩具"); 32 33 } 34 } 35 //定義一個食物父類 36 class Food 37 { 38 String nameString; 39 public void showName() { 40 System.out.println("我不知道是什麼食物"); 41 } 42 } 43 //這是食物魚 44 class Fish extends Food{ 45 public void showName() { 46 System.out.println("這是吃的魚"); 47 } 48 } 49 //這是食物骨頭 50 class Bone extends Food { 51 public void showName() { 52 System.out.println("這是吃的骨頭"); 53 } 54 } 55 //動物類 56 class Aanimal 57 { 58 private String nameString; 59 private int age; 60 public String getNameString() { 61 return nameString; 62 } 63 public void setNameString(String nameString) { 64 this.nameString = nameString; 65 } 66 public int getAge() { 67 return age; 68 } 69 public void setAge(int age) { 70 this.age = age; 71 } 72 //動物叫 73 public void cry() { 74 System.out.println("不知道怎麼叫"); 75 76 } 77 public void eat() { 78 System.out.println("不知道吃什麼"); 79 } 80 } 81 //繼承了父類並重寫或者叫覆蓋了成員方法 82 class Ccat extends Animal 83 { 84 public void cry() { 85 System.out.println("貓貓叫"); 86 } 87 public void eat() { 88 System.out.println("貓愛吃魚"); 89 } 90 } 91 92 class Ddog extends Animal 93 { 94 public void cry() { 95 System.out.println("狗狗叫"); 96 } 97 public void eat() { 98 System.out.println("狗受吃骨頭"); 99 } 100 }
抽象類
1 public class day06 { 2 public static void main(String []args) { 3 Doog dog=new Doog(); 4 dog.cry(); 5 } 6 } 7 //當你不知道父類的方法不知道怎麼寫的時候就用抽象類 8 //在類的前面加上關鍵字,abstract 9 //初始化構造方法,必須加上成員引數 10 //成員方法加上括號,裡面可以放參數,做為介面來用 11 //下面就是抽象類的寫法 12 abstract class Naimal 13 { 14 String nameString; 15 int age; 16 //這是抽象類方法 17 abstract public void cry(); 18 } 19 //當一個類繼承的父類是抽象類,必須把抽象類中的所有抽象方法全部實現 20 //以下繼承了抽象類Naimal所以必須實現抽象類中的所有方法 21 class Doog extends Naimal{ 22 //以下例項化了Naimal類中的抽象方法cry 23 public void cry() { 24 System.out.println("我不知道怎麼叫"); 25 } 26 }
介面
1 /** 2 * 類裡面: 介面的申明,介面的方法 3 */ 4 package com.test1; 5 6 public class day07 { 7 public static void main(String []args) { 8 //定義一臺電腦 9 Computer computer=new Computer(); 10 //定義一臺相機 11 Camera camera=new Camera(); 12 //定義一部手機 13 Phone phone =new Phone(); 14 //把USB埠給手機和相機用 15 computer.useUSB(phone); 16 computer.useUSB(camera); 17 18 } 19 } 20 //定義一個USB介面,介面名首字母大寫 21 //interface是定義介面的意思 22 //一個介面不能繼承其它類,但是可以繼承其它介面 23 interface Usb{ 24 //申明兩個方法 25 //介面中的變數初始貨必須給值 26 int a=1; 27 public void start(); 28 public void stop(); 29 } 30 //定義一個相機類,並實現Usb介面 31 //一個重要原則:當一個類實現了一個介面,就要把這個類的所有方法全部實現 32 //implements 是實現介面的意思 33 class Camera implements Usb{ 34 //實現Usb中start方法 35 public void start() { 36 System.out.println("我是相機,開始工作"); 37 } 38 //實現USB中stop方法 39 public void stop() { 40 System.out.println("我是相機,停止工作"); 41 } 42 } 43 //編寫一個手機類並且繼承Usb介面,並把USB裡面的方法全部實現 44 class Phone implements Usb{ 45 //實現USB中start方法 46 public void start() { 47 System.out.println("我是手機,我開始工作了"); 48 } 49 //實現USB中stop方法 50 public void stop() { 51 System.out.println("我是手機,我停止工作了"); 52 } 53 } 54 //定義一個電腦類並開始使用 55 //定義類名時首字母大寫 56 class Computer{ 57 public void useUSB(Usb usb) { 58 usb.start(); 59 usb.stop(); 60 } 61 }
把埠應用到類中,通過implements實現
1 /** 2 * 繼承中埠的應用 3 */ 4 package com.test1; 5 6 7 public class day08 { 8 public static void main(String []args) { 9 Xmonkey xmonkey=new Xmonkey(); 10 xmonkey.Fly(); 11 xmonkey.Dly(15, 10); 12 } 13 } 14 //定義了一個猴子類 15 class Monkey{ 16 String namString; 17 //跳 18 public void jump() { 19 System.out.println("猴子會跳"); 20 } 21 } 22 23 24 //一中小猴子繼承老猴子的功能 用implements繼承了鳥和魚的方法,並實現功能 25 class Xmonkey extends Monkey implements Ber,Feny{ 26 27 //實現了鳥的功能 28 @Override 29 public void Fly() { 30 // TODO Auto-generated method stub 31 System.out.println("我會飛"); 32 } 33 //實現在魚的功能並會計算 34 @Override 35 public void Dly(int a,int b) { 36 // TODO Auto-generated method stub 37 System.out.println("我會跳水"); 38 39 System.out.println(a+b); 40 41 } 42 43 } 44 45 //定義一隻鳥的埠,並且這隻鳥有一會飛的FLY方法 46 interface Ber{ 47 public void Fly(); 48 } 49 //定義一隻魚的埠,並且這隻魚有一個會遊Dly的方法 50 interface Feny{ 51 public void Dly(int a,int b); 52 }
final修飾的用法,能讓成員方法不被覆蓋,成員變數不被改變,類不能被繼承
1 /** 2 * 繼承中埠的應用 3 */ 4 package com.test1; 5 6 7 public class day08 { 8 public static void main(String []args) { 9 Xmonkey xmonkey=new Xmonkey(); 10 xmonkey.Fly(); 11 xmonkey.Dly(15, 10); 12 xmonkey.jump(); 13 Kan kan=new Kan(); 14 kan.don(); 15 } 16 } 17 //定義了一個猴子類 18 class Monkey{ 19 String namString; 20 //跳 21 public void jump() { 22 System.out.println("猴子會跳"); 23 } 24 } 25 26 27 //一中小猴子繼承老猴子的功能 用implements繼承了鳥和魚的方法,並實現功能 28 class Xmonkey extends Monkey implements Ber,Feny{ 29 30 //實現了鳥的功能 31 @Override 32 public void Fly() { 33 // TODO Auto-generated method stub 34 System.out.println("我會飛"); 35 } 36 //實現在魚的功能並會計算 37 @Override 38 public void Dly(int a,int b) { 39 // TODO Auto-generated method stub 40 System.out.println("我會跳水"); 41 42 System.out.println(a+b); 43 44 } 45 46 } 47 //定義一個Pan,並把 方法用final修飾一下,final可以讓變數和成員方法不能被修改和覆蓋 48 class Pan 49 { 50 final int a=0; 51 final public void jon() { 52 System.out.println("我會發送資訊"); 53 } 54 } 55 //新建一個類,繼承pan類,檢視fianl修飾過的方法能改變嗎,被FINAL修飾過的類也不能被繼承 56 class Kan extends Pan 57 { 58 59 public void don() 60 { 61 //a++; //這個地方我們已經看出報錯,說明FINAL修飾起作用了 62 System.out.println("a的值是:"+a); 63 } 64 /*public void jon() //這個地方法繼承PAN類後重寫JON方法就報錯了,說明final修飾起作用了 65 { 66 System.out.println("看方法能不能被重寫"); 67 }*/ 68 } 69 70 //定義一隻鳥的埠,並且這隻鳥有一會飛的FLY方法 71 interface Ber{ 72 public void Fly(); 73 } 74 //定義一隻魚的埠,並且這隻魚有一個會遊Dly的方法 75 interface Feny{ 76 public void Dly(int a,int b); 77 }