文章摘要
1范抓、構造方法
2写半、重載
3、重寫
4尉咕、方法參數(shù)以及傳遞
5叠蝇、遞歸
6、繼承
7年缎、多態(tài)
8悔捶、訪問修飾符
9、static修飾符
10单芜、final修飾符
11蜕该、abstract修飾符
12、interface接口
一洲鸠、類
在Java中堂淡,類是對象的抽象概念。在一個類中扒腕,包括屬性绢淀、方法等。
public class 計算器 {
//1瘾腰、定義類成員變量mCurrentResult : [數(shù)據(jù)類型] [變量名]
public String mCurrentResult;
/**
* 2皆的、方法
* 將結果輸出到屏幕
* @param message
*/
public void print(String message){//message局部變量
mCurrentResult = message;
System.out.println("計算結果:"+mCurrentResult);
}
}
類的初始化以及使用:
//使用new關鍵字,得到一個計算器對象 calc蹋盆。
計算器 calc = new 計算器();
//在計算器上费薄,打印 0.
calc.print("0");//計算結果:0
類名:
- 類名使用英文來命名,不建議使用中文栖雾。
- 類名首字母大寫
類名最好和實際使用的場景有意義楞抡,例如:Person,比Aaa要好上太多析藕。
二召廷、屬性
在類中,可以定義靜態(tài)常量噪径,也可以定義變量柱恤,這些都屬于類的屬性。變量按照作用范圍找爱,又分為成員變量和局部變量梗顺。格式:【數(shù)據(jù)類型 名稱 = 值】
如上文的代碼案例:mCurrentResult 成員變量,message局部變量车摄。
三寺谤、方法
3.1仑鸥、方法的四要素:方法返回值類型、方法名稱变屁、形式參數(shù)眼俊、方法體。
//【修飾符】 【返回值類型】 【方法名稱】(形式參數(shù)列表){
// //方法實現(xiàn)主體
// //return 返回值粟关。
// }
public int sum(int number1,int number2){
return number1+number2;
}
3.2疮胖、構造方法:
構造方法:
1、方法名必須與類名完全匹配闷板。
2澎灸、不含有返回類型
3、不能被描述符修飾
ps:當定義一個類時遮晚,會默認含有一個隱式性昭、無參構造方法。
public 計算器(){
System.out.println("歡迎使用計算器");
}
public 計算器(String msg){
this.mCurrentResult = msg;
System.out.println("初始屏幕顯示:"+msg);
}
3.3县遣、方法重載
重載:在一個類中糜颠,含有相同的方法名稱,但是:參數(shù)列表(參數(shù)的類型萧求、個數(shù)其兴、順序)不同的多個方法。例如:3.2中的兩個構造方法饭聚。
3.4忌警、方法重寫
重寫:在一個類中,子類對父類中的方法秒梳,進行重新實現(xiàn)。擁有相同的方法名稱箕速、返回值酪碘、形參列表。
- 重寫方法不能比被重寫的方法又嚴格修飾權限盐茎。
- static修飾的方法兴垦,無法被重寫。
3.5字柠、方法參數(shù)以及傳遞
Java語言中探越,方法中參數(shù)的賦值,只采用傳值的方式窑业,按照類型又分為:基本數(shù)據(jù)類型钦幔、引用數(shù)據(jù)類型。
基本數(shù)據(jù)傳遞:
int x = 5;
System.out.println("調用前:"+x);
change(x);
System.out.println("調用后:"+x);
public static void change(int x){
x = 300;
System.out.println("執(zhí)行中:"+x);
}
輸出:
調用前:5
執(zhí)行中:300
調用后:5
引用數(shù)據(jù)傳遞:
calc.mCurrentResult = "調用方法前";
System.out.println("方法調用前:"+calc.mCurrentResult);
change(calc);
System.out.println("方法調用后:"+calc.mCurrentResult);
public static void change(計算器 calc){
calc.mCurrentResult = "調用change方法";
System.out.println("方法執(zhí)行中:currentResult:"+calc.mCurrentResult);
}
輸出:
方法調用前:調用方法前
方法執(zhí)行中:currentResult:調用change方法
方法調用后:調用change方法
3.6常柄、遞歸調用
//計算從1到10的加法和
int sumCount = sum(10);
System.out.println("sumCount is:"+sumCount);
private static int sum(int n){
if(n==1){
return 1;
}else{
return n+**sum(n-1)**;
}
}
四鲤氢、this關鍵字
this:當前對象的引用搀擂。
public 計算器(String mCurrentResult){
this();
this.mCurrentResult = mCurrentResult;
System.out.println("初始屏幕顯示:"+mCurrentResult);
}
- 當方法的參數(shù)名稱與類的成員變量相同時,使用this可以用來明確變量的作用范圍卷玉。例如:上面的代碼哨颂,方法的mCurrentResult與類的成員變量mCurrentResult,相同相种。
- 調用本類的其他構造方法威恼,如上面的例子中的this();
** 五寝并、繼承 **
1沃测、類可以繼承父類耍鬓,成為一個子類矾柜。2枢希、繼承是“is-a”關系依啰。3会放、子類可以通過繼承们衙,來獲得父類的特性彭则。4棱烂、Java只支持單繼承:一個類只能有一個父類哎媚,但一個父類可以派生多個子類喇伯。
public class Person {
public String name;
public Person(String name){
this.name = name;
}
public String toDesc() {
return "Person [name=" + name + "]"
+",兩條胳膊,兩條腿拨与。";
}
}
Super:同“this”關鍵字一樣稻据,Super代表父類的引用
public class 稻草人 extends Person{
public 稻草人(String name) {
super(name);
}
@Override
public String toDesc() {
return super.toDesc();
}
}
六、多態(tài)
1买喧、子類可以自動向上轉型為父類型捻悯。
2、父類型要轉換為子類型淤毛,必須強制類型轉換今缚。但強轉有風險。比如:類型轉換操作低淡。
java.lang.ClassCastException
3姓言、可以使用instance of來甄別對象類型。
//1蔗蹋、初始化基本的人對象
Person person = new Person("某某某");
System.out.println(person.toDesc());//Person [name=某某某],兩條胳膊何荚,兩條腿。
//2猪杭、向上轉型
Person 稻草Person = new 稻草人("衛(wèi)兵");
System.out.println(稻草Person.toDesc());//名字叫做衛(wèi)兵的稻草人,兩條胳膊餐塘,一條腿。
//3胁孙、可以通過instance of來甄別對象的類型
boolean isPersion = 稻草Person instanceof Person;
System.out.println(isPersion?"稻草Person 是 Person唠倦。":"稻草Person不是Person類型称鳞。");//稻草Person 是 Person。
//4稠鼻、向下轉型,需要強制類型轉換,將類型為"Person"的稻草Person冈止,強制轉換為 稻草人。
稻草人 daocao = (稻草人) 稻草Person;
System.out.println(daocao.toDesc());//名字叫做衛(wèi)兵的稻草人,兩條胳膊候齿,一條腿熙暴。
七、訪問修飾符
private:私有的慌盯。只有在類中才能訪問周霉,只能修飾屬性和方法。
protected:受保護的亚皂。該類以及其成員均可以訪問俱箱,同一個包中的類也可以訪問。只能修飾屬性和方法灭必,不能修飾類狞谱。
public:公開的。
Default:不使用修飾符禁漓。只有同一包中的類可以訪問跟衅。
八、static
使用static修飾的變量叫做靜態(tài)變量播歼、修飾的方法叫做靜態(tài)方法伶跷,修飾的代碼塊叫做靜態(tài)代碼塊。
static屬于類共有秘狞,不屬于某個對象叭莫,優(yōu)先加載。
public class 男人 extends Person{
static{
System.out.println("靜態(tài)代碼塊谒撼!");
}
public 男人(String name) {
super(name);
System.out.println("構造方法食寡!");
}
public static void main(String args[]){
男人 man = new 男人("張三");
}
}
輸出:
靜態(tài)代碼塊!
構造方法廓潜!
靜態(tài)代碼塊中的方法,優(yōu)于對象的構造方法而先執(zhí)行善榛。
九辩蛋、final修飾符
final:終極
1、final修飾的類不能被子類繼承移盆,所有方法都為隱式final方法悼院。
2、final修飾的方法咒循,不能被子類覆蓋
3据途、final修飾的變量绞愚,只能初始化一次。
十颖医、abstract
abstract修飾的類位衩,不能被實例化,即:不能通過new實例化
十一熔萧、接口Interface
抽象類型糖驴,編程超類型。
接口中定義的變量佛致,默認為:public static final ,變量值不可修改贮缕。