第11天 構造器、建立物件記憶體分析、三大特徵之封裝、繼承
阿新 • • 發佈:2021-08-05
構造器詳解
package com.oop.Demo02; //java----->class public class Person { String name; int age; //例項化初始值 //1.使用new關鍵字,本質實在呼叫構造器,必須要有構造器 //2.用來初始化值 public Person() { } //有參構造:一旦定義了有參構造,無參就必須顯示定義 public Person(String name, int age) { this.name = name; this.age = age; } //alt+insert } /* public static void main(String[] args) { //例項化一個物件 Person person = new Person("kuangshen",23); System.out.println(person.name);//null } -------------------------------------------------- 構造器 1.和類名相同 2.沒有返回值 作用: 1.new 本質是呼叫構造器 2.初始化物件的值 注意點: 1.定義有參構造之後,如果使用無參構造, 顯示的定義一個無參的構造 快捷鍵: Alt + insert this.* = 引數傳進來的值 */
3.建立物件記憶體分析
繪製記憶體分析圖
public class Pet { public String name; public int age; //無參構造 public void shout(){ System.out.println("叫了一聲!"); } } /* public static void main(String[] args) { Pet dog = new Pet(); dog.name="旺財"; dog.age=3; dog.shout(); System.out.println(dog.name); System.out.println(dog.age); Pet cat = new Pet(); //面向物件06:建立物件記憶體分析 } */
簡單小結--類與物件
public static void main(String[] args) { /* 1.類與物件 類是一個模板:抽象 物件是一個具體的例項 2.方法 定義、呼叫 3.物件的引用 引用型別:基本型別(8大基本型別) 物件是通過引用來操作的:棧--->堆 4.屬性:欄位Filed 或者成員變數 預設初始化: 數字:0 0.0 char:u0000 Boolean:false 引用: null 修飾符 屬性型別 屬性名 =屬性值; 5.物件的建立和使用: -必須使用new關鍵字建立物件,必須使用構造器 Person kuangshen =new Person(); -物件的屬性 kuangshen.name; -物件的方法 kuangshen.sleep; 6.類: 靜態的屬性 ----屬性 動態的行為 ----方法 下一步學習封裝、繼承、多型!!!! */ } 提醒自己:總結下,前面基礎必須掌握牢固,不然越欠越多,別放棄!加油!
- 面向物件的三大特徵
封裝
- 該露的露,該藏的藏
- 我們程式設計要求“高內聚,低耦合”。
- 高內聚就是類的內部資料操作細節自己完成,不允許外部干涉;
- 低耦合就是僅暴漏少量的方法給外部使用
- 我們程式設計要求“高內聚,低耦合”。
- 封裝(資料的隱藏)
- 通常,應禁止直接訪問一個物件中的資料的實際表示,而應通過操作介面來訪問,這成為資訊隱藏
- 記住這句話就夠了:屬性私有 get/set
package com.oop.Demo04;
//類 private:私有
public class Studernt {
//屬性私有
private String name; //名字
private int id; //學號
private char sex; //性別
private int age;
//提供一些可以操作這個屬性的方法
//必須提供一些public的get set方法
//get 獲得這個資料或屬性
public String getName(){
return this.name;
}
//set 給這個資料設定值
public void setName(String name){
this.name = name;
}
//快捷鍵 Alt+Insert 也可以自動生成get set
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age>120||age<0){
this.age = 3;
}else {
this.age = age;
}
}
}
/*
1.提高程式的安全性,保護資料
2.隱藏程式碼實現細節
3.統一介面
4.系統可維護性增加
*/
/*
public class Application {
public static void main(String[] args) {
Studernt s1 = new Studernt();
s1.setName("秦始皇");
System.out.println(s1.getName());
s1.setAge(999);//不合法的
System.out.println(s1.getAge());
}
}
*/
繼承
- 繼承的本質是對某一批類的抽象,從而實現對現實世界更好的建模
- extends的意思是“擴充套件”,子類是父類的擴充套件。
- java中類只有單繼承,沒有多繼承!一個兒子只能有一個爸爸吧,但一個爸爸可以有多個兒子
- 繼承是類和類之間的一種關係,除此之外,類和類之家的關係還有依賴、組合、聚合等
- 繼承關係的兩個類,一個為子類(派生類),一個是父類(基類)。子類繼承父類,使用關鍵字extends來表示。
- 子類和父類之間,從意義上將應該具有“is a“的關係
- object類
- super
- 方法重寫
opp.demo05中的person----> teacher
----> student