面向對象概述
符合人類思惟習慣的編程思想 , 生活中存在着不一樣形態的事物 , 這些事物存在着不一樣的聯繫 , 在程序中使用對象來映射現實中事物 , 使用對象關係來描述事物之間的聯繫, 這種思想就是面向對象.java
面向對象過程
分析解決問題所須要的步驟, 使用函數把步驟實現, 再依次調用就能夠了. 編程
類與對象 ->封裝
class Exampel1{
public static void main (String[] args){
Person p1 = new Person();//建立第一個person對象
Person p2 = new Person();//建立第二個person對象
P1.age = 18;//賦值
P1.speak();//調用對象的方法
P2.speak();
}
}
- 若是沒有賦值 , Java會自動賦予初始值
- 類的設計
public class Student{ //設計一個學生類
String name ; // 定義學生姓名屬性
int age ; //定義學生年齡屬性
public void introduce() {
//方法中打印屬性name和age的值
System.out.println("你們好, 我叫"+name +"我今年" +age +
"歲了");
}
}
類的封裝
將類的屬性私有化, 使用 private 關鍵字來修飾, 不容許外界隨意訪問函數
setter : 給成員變量設置屬性值,起到必定的保護做用學習
getter : 從成員變量中獲取屬性值this
構造方法
- 定義
- 方法名與類名相同
- 在方法名的前面沒有返回值類型的聲明
- 在方法中不能使用return語句返回一個值, 可是能夠單獨寫return語句做爲方法的結束
class Person{
int age ;
// 定義有參的構造方法
public Person (int a ){
age = a ; // 爲age 屬性賦值
}
public void speak (){
System.out.println("今年我已經" + age + "碎了");
}
}
Public class Test{
public static void main(Strings [] age ){
Person p1 = new Person( 20 ); //實例化Person的對象
p1.speak();
}
}
構造方法的重載
在一個類中能夠定義多個構造方法,只要每一個構造方法的參數類型或參數個數不一樣便可spa
this關鍵字
設計
- 訪問本類中的成員變量
- this和super是區分子類與父類重名的部分
super關鍵字
- 獲取父類中的內容
- 必須寫在第一行, 調用父類中的構造方法
- 若是父類的構造是無參數, 能夠不寫, 若是父類沒有無參數的構造,必須寫super
static關鍵字
- 數據共享
- 使用類名 . 變量名去訪問 / 使用實例化對象的方式去訪問
- 優於對象產生
- 在靜態方法不能使用this
- 使用類名 . 方法名去調用靜態方法
final關鍵字
- 被final修飾的變量不能夠改變 , 最終的變量又稱爲常量
- 類不能夠繼承
- 不能夠重寫
- 換句話說就是不能夠變
包和導包
- 包 : 其實本質就是文件夾
- 在代碼中須要寫package 包名
- 導包 : import 包 + 類
- 不須要導包 :
- 本身包裏
- java.lang包下的都不須要導包
訪問權限
- public : 公共的 , 全部人均可以訪問
- private : 私有的
- default : 包訪問權限 , 在本身的包內能夠隨意訪問
繼承
- 使用extends關鍵字
- 子類能夠自動擁有父類私有內容外的全部內容
重寫code
- 子類對父類提供的方法進行從新定義
- 子類中的方法必須和父類中的方法徹底一致
- 父類中有多少方法,子類必須重寫父類的方法
多態對象
- 同一個對象擁有多種形態
- 做用 : 把不一樣的數據類型進行統一
- 對象類型轉換
- 向上轉型 : 把子類對象賦值給父類的引用(變量)
- 可是會屏蔽掉子類中特有的方法
實現blog
抽象
- java容許在定義方法時不寫方法體
- 抽象方法沒有方法體
- 抽象方法必須使用abstract關鍵字修飾
- abstract修飾方法就是抽象方法 , 同時類也變成抽象類(加上abstract)
- 可是抽象類中能夠不包含任何抽象方法
特色
- 不能夠建立對象
- 子類繼承(extends) 父類後 , 抽象的子類,必須重寫父類中的抽象方法 , 才能不變成抽象子類
- 抽象類中也能夠有正常方法
- 做用 : 能夠強制要求子類要求的方法 , 使代碼更加規範
接口
- 特殊抽象類
- 全部的方法都是抽象方法 , 能夠省略abstract
- 用interface關鍵字聲明 , 全部的內容都是公共的, 全局靜態 , 常量
- 定義的全局常量默認修飾爲public static final
- 定義的抽象方法默認修飾爲public abstract
- 接口和類只能是實現 ( implements ) 關係 (上面的抽象和類是繼承extends關係)
- 類只能單繼承 , 接口支持多實現
- 類能夠繼承一個類 , 實現多接口
- 接口同樣具備多態性 , 整合不相關內容
object
- 全部類的根
- 默認繼承object
- 萬事萬物皆爲對象
equals和==
- equals : 默認調用的是object提供的equals方法 , 判斷兩個對象內容是否相等
- == : 判斷兩個對象內存地址是否一致 , 通常用在基本數據類型上
toString
- 默認包+類 @ 地址 , 對一個對象的字符串表示形式
- instanceof : 判斷xxx對象是不是xxx類型的
參數傳遞問題
內存簡單分析
JAVA新手一枚 , 大佬勿噴, 以上的內容是學習過程當中的筆記, 權當記錄複習 , 具體仍是要看Java的基礎案例來理解