面向?qū)ο笏枷?/h1>
概述:找一個(gè)對(duì)象來干活.不用再關(guān)注過程.
基本步驟:
定義類--創(chuàng)建對(duì)象--調(diào)用方法.
類與對(duì)象
類:對(duì)事物的描述
對(duì)象: 事物的實(shí)體.
關(guān)系: 類就是對(duì)對(duì)象的描述.
對(duì)象就是類的具體體現(xiàn).
類 : 虛的
對(duì)象:實(shí)的
定義類格式:
class 類名{
//成員變量 : 屬性
//構(gòu)造方法 : 創(chuàng)建對(duì)象用的
//成員方法 : 行為,功能
}
面向?qū)ο蟮娜筇卣?/h1>
封裝
步驟:1.private私有成員
2.提供公共的訪問方式
get/set : 可以更改對(duì)象的值
構(gòu)造方法: 創(chuàng)建對(duì)象就賦值了
private:
作用:私有化,保護(hù)數(shù)據(jù),隱藏實(shí)現(xiàn)細(xì)節(jié)
特點(diǎn):只有本類可以訪問. 外部的類都看不見.
this:
作用: 指代本類當(dāng)前對(duì)象
1. 局部變量隱藏成員變量
setXxx(String name){
this.name = name;
}
int num=20;
show(){
int num =30 ; // 就近 隱藏了
syso(this.num);
}
2.調(diào)用自己的構(gòu)造
this ( 參數(shù)); 調(diào)用自己的有參構(gòu)造
static: 靜態(tài)
特點(diǎn):隨著類的加載而加載.
修飾成員
1.成員方法調(diào)用
類名.方法名(); (看情況,比較方便)
2.成員變量
類名.變量名; (不常用)
所有對(duì)象共享其值.
繼承
概述:子類集成父類
class Zi extends Fu { }
特點(diǎn):1.單繼承, 只有一個(gè)親爹
2.多層繼承 , 還可以有爺爺
3.父類有的,子類可以直接用.
注意事項(xiàng):
1.private的東西 不能繼承.
2.構(gòu)造方法不能繼承, 但是可以訪問
默認(rèn)通過super(); 訪問父類的無參構(gòu)造
super(參數(shù)); 手動(dòng)方法父類有參
3.不能隨便繼承.
4.is a 的關(guān)系時(shí)候,才能使用.
super:
成員關(guān)系
成員變量(同名):
super.父類成員變量. 訪問父類成員.
構(gòu)造方法:
注意事項(xiàng):默認(rèn)訪問父類無參
1.super();
2.super(name,age);
3.必須在構(gòu)造方法中第一行
成員方法(同名):重寫
重寫概述:子父類中, 一模一樣的方法. (方法名,返回值類型 ,參數(shù)列表 )
注意事項(xiàng):
1.private的不能重寫
2.權(quán)限不能更低.解決方案 : 一模一樣.
靜態(tài)方法:
重寫: 使用靜態(tài)才能靜態(tài)方法.
final:
概述:最終的
特點(diǎn):被修飾的不能改變
類: 不能繼承
變量: 不能賦值,只能初始化一次.
方法: 不能重寫.
多態(tài):
概述:一種事物多種形態(tài)
前提:
1.繼承或者實(shí)現(xiàn) (二選一)
2.方法重寫(才有意義)
3.父類引用指向子類對(duì)象
Fu f = new Zi();
成員關(guān)系:
成員變量:編譯看左邊,運(yùn)行看左邊
構(gòu)造方法:編譯看左邊,運(yùn)行看左邊
成員方法:編譯看左邊,運(yùn)行看右邊 *
靜態(tài)方法:編譯看左邊,運(yùn)行看左邊
子類特有的方法:
向上轉(zhuǎn)型: 子--> 父
格式: fu f = new Zi();
向下轉(zhuǎn)型: 父 --> 子
格式:
Zi z = (Zi)f;
抽象類
概述:描述不清楚的類
特點(diǎn):
1.格式:
abstract class 類名{
public abstract void 方法名();
}
2.方法特點(diǎn): 可以抽象 ,也可以非抽象
3.構(gòu)造方法: 有,不能new
4.如何使用抽象類?
使用它的子類.
5.子類特點(diǎn):
1.要么抽象
2.要么重寫它所有的抽象方法
成員特點(diǎn):
a:成員變量:變量/常量
b:構(gòu)造方法:有
c:成員方法:抽象/非抽象
面試題: abstract 不能和哪些關(guān)鍵字共存(定義方法來測(cè)試)?
private 沖突 -- 對(duì)子類隱藏,而 abstract 必須讓子類重寫
final 沖突 -- 不能被重寫,矛盾
static 無意義-- 類名調(diào)用,沒有方法體,無意義
接口
概述:把很多功能封裝到接口中,用類去實(shí)現(xiàn)接口 ,重寫里面的功能 .
本質(zhì):就是一種規(guī)則
特點(diǎn):
1.格式: interface 接口名{
}
使用:
class A implements 接口名 {
}
2.成員變量: 常量
3.成員方法: 抽象
4.構(gòu)造方法: 無
5.實(shí)例化:
方式1:new 子類
方式2: new Inter(){}; // 加一個(gè) {} 重寫方法
6.子類要求:
1.要么抽象
2.要么重寫它所有的抽象方法
內(nèi)部類
概述: 類里面的類 (人里面的心臟)
成員內(nèi)部類:成員位置 ,類中方法外
格式:
class Outer{
private class Inner{
}
public void method(){
new Inner();
}
}
注意:如果private 修飾內(nèi)部類,那么就不能直接創(chuàng)建,提供公共的訪問方式.
局部?jī)?nèi)部類:在方法內(nèi)部
格式:
class Outer{
show(){
final int num =10;
class Inner {
}
}
}
問題:只能訪問被final修飾的局部變量嗎?
肯定的.使用final把局部變量變成常量.
匿名內(nèi)部類:
前提:有一個(gè)接口或者類(抽象類)
本質(zhì): *匿名對(duì)象*-- 這個(gè)對(duì)象時(shí)實(shí)現(xiàn)了接口或者繼承了類的子類對(duì)象 ,必須重寫所有抽象方法
new 接口(){
重寫抽象方法
}.方法名();
代碼塊:
靜態(tài):成員位置, 類加載的執(zhí)行,只有一次
構(gòu)造:成員位置, 每次構(gòu)造方法前執(zhí)行
局部:方法內(nèi),提供效率.
權(quán)限修飾符:
本類 同包 不同包子類 不同包其他類
private *
default * *
protected * * * *
public * * * *
概述:找一個(gè)對(duì)象來干活.不用再關(guān)注過程.
基本步驟:
定義類--創(chuàng)建對(duì)象--調(diào)用方法.
類:對(duì)事物的描述
對(duì)象: 事物的實(shí)體.
關(guān)系: 類就是對(duì)對(duì)象的描述.
對(duì)象就是類的具體體現(xiàn).
類 : 虛的
對(duì)象:實(shí)的
class 類名{
//成員變量 : 屬性
//構(gòu)造方法 : 創(chuàng)建對(duì)象用的
//成員方法 : 行為,功能
}
封裝
步驟:1.private私有成員
2.提供公共的訪問方式
get/set : 可以更改對(duì)象的值
構(gòu)造方法: 創(chuàng)建對(duì)象就賦值了
private:
作用:私有化,保護(hù)數(shù)據(jù),隱藏實(shí)現(xiàn)細(xì)節(jié)
特點(diǎn):只有本類可以訪問. 外部的類都看不見.
this:
作用: 指代本類當(dāng)前對(duì)象
1. 局部變量隱藏成員變量
setXxx(String name){
this.name = name;
}
int num=20;
show(){
int num =30 ; // 就近 隱藏了
syso(this.num);
}
2.調(diào)用自己的構(gòu)造
this ( 參數(shù)); 調(diào)用自己的有參構(gòu)造
static: 靜態(tài)
特點(diǎn):隨著類的加載而加載.
修飾成員
1.成員方法調(diào)用
類名.方法名(); (看情況,比較方便)
2.成員變量
類名.變量名; (不常用)
所有對(duì)象共享其值.
繼承
概述:子類集成父類
class Zi extends Fu { }
特點(diǎn):1.單繼承, 只有一個(gè)親爹
2.多層繼承 , 還可以有爺爺
3.父類有的,子類可以直接用.
注意事項(xiàng):
1.private的東西 不能繼承.
2.構(gòu)造方法不能繼承, 但是可以訪問
默認(rèn)通過super(); 訪問父類的無參構(gòu)造
super(參數(shù)); 手動(dòng)方法父類有參
3.不能隨便繼承.
4.is a 的關(guān)系時(shí)候,才能使用.
super:
成員關(guān)系
成員變量(同名):
super.父類成員變量. 訪問父類成員.
構(gòu)造方法:
注意事項(xiàng):默認(rèn)訪問父類無參
1.super();
2.super(name,age);
3.必須在構(gòu)造方法中第一行
成員方法(同名):重寫
重寫概述:子父類中, 一模一樣的方法. (方法名,返回值類型 ,參數(shù)列表 )
注意事項(xiàng):
1.private的不能重寫
2.權(quán)限不能更低.解決方案 : 一模一樣.
靜態(tài)方法:
重寫: 使用靜態(tài)才能靜態(tài)方法.
final:
概述:最終的
特點(diǎn):被修飾的不能改變
類: 不能繼承
變量: 不能賦值,只能初始化一次.
方法: 不能重寫.
多態(tài):
概述:一種事物多種形態(tài)
前提:
1.繼承或者實(shí)現(xiàn) (二選一)
2.方法重寫(才有意義)
3.父類引用指向子類對(duì)象
Fu f = new Zi();
成員關(guān)系:
成員變量:編譯看左邊,運(yùn)行看左邊
構(gòu)造方法:編譯看左邊,運(yùn)行看左邊
成員方法:編譯看左邊,運(yùn)行看右邊 *
靜態(tài)方法:編譯看左邊,運(yùn)行看左邊
子類特有的方法:
向上轉(zhuǎn)型: 子--> 父
格式: fu f = new Zi();
向下轉(zhuǎn)型: 父 --> 子
格式:
Zi z = (Zi)f;
抽象類
概述:描述不清楚的類
特點(diǎn):
1.格式:
abstract class 類名{
public abstract void 方法名();
}
2.方法特點(diǎn): 可以抽象 ,也可以非抽象
3.構(gòu)造方法: 有,不能new
4.如何使用抽象類?
使用它的子類.
5.子類特點(diǎn):
1.要么抽象
2.要么重寫它所有的抽象方法
成員特點(diǎn):
a:成員變量:變量/常量
b:構(gòu)造方法:有
c:成員方法:抽象/非抽象
面試題: abstract 不能和哪些關(guān)鍵字共存(定義方法來測(cè)試)?
private 沖突 -- 對(duì)子類隱藏,而 abstract 必須讓子類重寫
final 沖突 -- 不能被重寫,矛盾
static 無意義-- 類名調(diào)用,沒有方法體,無意義
接口
概述:把很多功能封裝到接口中,用類去實(shí)現(xiàn)接口 ,重寫里面的功能 .
本質(zhì):就是一種規(guī)則
特點(diǎn):
1.格式: interface 接口名{
}
使用:
class A implements 接口名 {
}
2.成員變量: 常量
3.成員方法: 抽象
4.構(gòu)造方法: 無
5.實(shí)例化:
方式1:new 子類
方式2: new Inter(){}; // 加一個(gè) {} 重寫方法
6.子類要求:
1.要么抽象
2.要么重寫它所有的抽象方法
內(nèi)部類
概述: 類里面的類 (人里面的心臟)
成員內(nèi)部類:成員位置 ,類中方法外
格式:
class Outer{
private class Inner{
}
public void method(){
new Inner();
}
}
注意:如果private 修飾內(nèi)部類,那么就不能直接創(chuàng)建,提供公共的訪問方式.
局部?jī)?nèi)部類:在方法內(nèi)部
格式:
class Outer{
show(){
final int num =10;
class Inner {
}
}
}
問題:只能訪問被final修飾的局部變量嗎?
肯定的.使用final把局部變量變成常量.
匿名內(nèi)部類:
前提:有一個(gè)接口或者類(抽象類)
本質(zhì): *匿名對(duì)象*-- 這個(gè)對(duì)象時(shí)實(shí)現(xiàn)了接口或者繼承了類的子類對(duì)象 ,必須重寫所有抽象方法
new 接口(){
重寫抽象方法
}.方法名();
代碼塊:
靜態(tài):成員位置, 類加載的執(zhí)行,只有一次
構(gòu)造:成員位置, 每次構(gòu)造方法前執(zhí)行
局部:方法內(nèi),提供效率.
權(quán)限修飾符:
本類 同包 不同包子類 不同包其他類
private *
default * *
protected * * * *
public * * * *
常用 public 修飾 類 和方法
;private 修飾 成員變量