java語言的特點(diǎn):
*? 1、面向?qū)ο?/p>
*?
*? 面向?qū)ο蟮奶攸c(diǎn):? 封裝、繼承、多態(tài)
*?
*? 1、類與對象的關(guān)系
*?
*? 類:物以類聚 人以群分
*?
*? 類:將具有相同特征和行為的事物,進(jìn)行抽象化形成一類
*? 類的特點(diǎn):
*? 1、相同特征和行為
*? 2、抽象化的
*?
*? 對象: 就是類的一個(gè)具體的實(shí)例
*?
*? 類與對象的關(guān)系:
*? 1、類是抽象化的,對象是類中具體的實(shí)例,每個(gè)實(shí)例都有該類的特征和行為
*? 2、對象是類的具體實(shí)例,一個(gè)類可以有多個(gè)實(shí)例,一個(gè)對象就屬于一個(gè)類
*?
*?
*? java中類:
*? 1、類的語法:
*? public? class? 類名{
*? 代碼
*? }
*?
*? 類的特征:成員變量(屬性)
*? 類的行為:成員方法(非靜態(tài)方法)
*? 成員變量、成員方法? 是屬于對象的屬性和行為
*?
*?
*?
*? 類是一張圖紙,規(guī)定了該類所有的特征和行為
*?
*? 對象根據(jù)類這個(gè)圖紙來實(shí)例化的,那么只要是該類的對象,都具有該類的特征和行為.
類的特征:? 成員變量
*? 類的行為:? 成員方法
*?
*? 對象怎么創(chuàng)建:
*? 對象都是用該類的構(gòu)造方法創(chuàng)建的
*?
*? 什么是構(gòu)造方法:
*? 構(gòu)造方法就是一個(gè)特殊的方法,沒有返回值也不需要寫void
*? 構(gòu)造方法名必須和類名保持一致
*?
*? 語法:
*? public 類名( [參數(shù)列表] ){
*? 代碼;
*? }
*?
*? 構(gòu)造方法的調(diào)用方式:
*? 只能通過new 關(guān)鍵字調(diào)用
*? new 構(gòu)造方法名();
*?
*? 構(gòu)造方法的作用:
*? 1、創(chuàng)建本類的對象
*? 2、初始化成員變量
*/
//構(gòu)造方法----? 無參構(gòu)造
public ClassAndObject02(){
}
//主方法
public static void main(String[] args) {
//創(chuàng)建本類的對象 -- 通過new關(guān)鍵字 調(diào)用構(gòu)造方法
// 對象本身是引用數(shù)據(jù)類型,需要賦值給該類的一個(gè)變量
ClassAndObject02 object = new ClassAndObject02();
System.out.println(object);
構(gòu)造方法:
* 作用
* 1、創(chuàng)建本類的對象
* 2、初始化成員變量
*
* 成員變量(屬性):
* ? ? 位置:在類中,方法的外面
* ? ? ? ? ? ? ? ? 數(shù)據(jù)類型? 變量名? [ = 值 ];
*? ? 訪問:
*? ? 對象.屬性
*? ?
*? ? 作用范圍:整個(gè)類中
*? ?
*? ? 內(nèi)存位置:
*? ? 內(nèi)存: 棧 、堆、常量池、本地方法區(qū)
*? ? 成員變量存放位置:堆
*?
*? 構(gòu)造方法的特點(diǎn):
*? 1、構(gòu)造方法名必須和類名保持一致
*? 2、構(gòu)造方法沒有返回值,也不需要寫void
*? 3、一個(gè)類中如果沒有顯示的表明無參構(gòu)造,虛擬機(jī)會(huì)默認(rèn)提供一個(gè)無參構(gòu)造方法
*? 4、一個(gè)類中定義了有參數(shù)的構(gòu)造方法,虛擬機(jī)不再提供無參構(gòu)造,需要手動(dòng)添加
*/
//成員變量? -- 對象的屬性
String name ;
int age ;
//無參構(gòu)造? alt + shift + s? 選Generate最后一個(gè)
public Construct01() {
}
//有參構(gòu)造
public Construct01(String a , int b ){
name = a;
age = b ;
}
//主方法
public static void main(String[] args) {
//調(diào)用無參構(gòu)造方法
//自己生成相對應(yīng)類型的變量
//alt + shift + L 自己起變量名
Construct01 c = new Construct01();
System.out.println(c.name); // null
System.out.println(c.age);? // 0
//創(chuàng)建對象
Construct01 con = new Construct01("張三",20);
System.out.println(con.name); // 張三
System.out.println(con.age);? // 20
}
}
值傳遞:
* 1、參數(shù)是基本數(shù)據(jù)類型
* 2、參數(shù)是引用數(shù)據(jù)類型
*/
/**
* 自己定義的方法
* @param i
*/
public static void m1(int i){
i++;
System.out.println("m1--------->" + i); // 11
}
//主方法
public static void main(String[] args) {
int a = 10 ;
ValuePass01.m1(a);
System.out.println("main------->" + a); //11? 10
}
}
* 值傳遞:
* 1、參數(shù)是基本數(shù)據(jù)類型
* 2、參數(shù)是引用數(shù)據(jù)類型
*/
//屬性 -- 成員變量
String name? ;
int age ;
public? static void? m2( ValuePass02 v ){
v.name = "葫蘆娃" ;
v.age = 10 ;
//System.out.println("m2 姓名:" + v.name); //葫蘆娃
//System.out.println("m2 年齡:" + v.age);? //10
}
public static void main(String[] args) {
ValuePass02 val = new ValuePass02();
System.out.println("main 姓名:" + val.name); //
System.out.println("main 年齡:" + val.age);? //
//調(diào)用m2方法
ValuePass02.m2(val);
System.out.println("main 姓名:" + val.name); //葫蘆娃
System.out.println("main 年齡:" + val.age);? //10
}
/**
* 作業(yè):
* 聲明一個(gè)狗類 Dog類 :
* 屬性:
* color: 顏色
* size : 大小
* type : 品種
*
* 在main方法中創(chuàng)建兩個(gè)Dog類的對象
* 對象1 訪問屬性,輸出的是默認(rèn)值
*
* 對象2訪問屬性:
* color : 灰色
* size? : 大型犬
* type? : 阿拉斯加雪橇犬
*
* 在自定義的方法中,輸出的對象1的屬性是:
* color : 白色
* size? : 中型犬
* type? : 西西伯利亞雪橇犬
*/
}