我要宣佈一件大事,我有粉絲了,哈哈哈哈哈哈哈哈啊哈哈哈啊哈,激動的❤,顫抖的手,我要繼續加油了
今天第一次用md繪製表格,淡定
封裝
什麼是封裝:在類中,對於不想被類外直接訪問的成員變量,進行私有化,同時對外提供一個公有的方法爲了訪問私有的成員。
封裝成員變量兩個步驟:
1 添加private
2 添加get和set方法
類設計原則
成員變量(屬性)私有化(用private修飾),添加get和set方法
公開方法(用public修飾)
exp:
private 屬性類型 Xxx;
get方法表示訪問私有屬性的方法:
public 屬性類型 getXxx(){
return 屬性;
}
set方法表示修改私有屬性的值的方法:
public void setXxx(參數類型 參數){
this.xxx = 參數;
}
代碼塊
代碼塊分爲:靜態代碼塊,動態代碼塊,局部代碼塊
局部代碼塊:聲明在方法中的代碼塊,執行時機與聲明位置相關。(瞭解) 提前釋放變量,控制變量的作用域
//main方法內
{
}
動態代碼塊:又稱構造代碼塊或實例代碼塊,聲明在類體中的代碼塊,創建對象時自動執行一次,每創建一個對象就執行一次動態代碼塊。初始化工作。(使用不多)
//類內
{
}
靜態代碼塊:使用static關鍵字修飾的動態代碼塊,在類加載時自動執行,並只執行一次。(記住)
//類內
static{
}
繼承
使用extends關鍵實現兩個類的繼承關係
被繼承的類:父類,根類,超類,基類
繼承的類:子類,派生類
語法
public class FatherClass{
//屬性
//方法
}
public class ChildClass extends FatherClass {
//屬性
//方法
}
public class Person {
String name;
int age;
String birthday;
public void showInfo() {
System.out.println("姓名:"+name+" 年齡:"+age+" 出生日期:"+birthday);
}
}
public class Student extends Person{
String school;
public void study() {
System.out.println(name+"好好學習天天向上");
}
}
super關鍵字
super表示父類的引用
1)super.屬性:表示訪問父類中的屬性,當子類中定義了與父類同名的屬性時,若想在子類中訪問父類的同名屬性,需要使用super.屬性訪問
2)super.方法:表示調用父類中的方法,在子類中需要調用父類中沒有被重寫的方法時,需要使用super.方法調用
3)super():表示調用父類的構造方法,注意:super()必須是子類構造方法中第一條語句
子類中構造方法默認第一條語句會調用父類的無參數構造方法super(),也可以手動調用父類中帶參數的構造方法
public class Animal {
//屬性
String nickname;
String color;
String strain;
//默認構造方法
public Animal() {
System.out.println("父類Animal的構造方法執行了..........");
}
//帶參構造方法()
public Animal(String nickname,String color,String strain) {
this.nickname=nickname;
this.color=color;
this.strain=strain;
}
//打印方法
public void printInfo() {
System.out.println("本動物 暱稱:"+nickname+" 顏色:"+color+" 品種:"+strain);
}
}
public class Dog extends Animal{
int love;
//默認構造方法
public Dog() {
super();//調用父類的默認構造方法
System.out.println("Dog子類的構造方法執行了");
}
//帶參構造方法
public Dog(String nickname,String color,String strain,int love) {
super(nickname, color, strain);//調用父類的帶參構造
this.love=love;
}
public void lookHome() {
System.out.println(nickname+"正在給主人看家....");
System.out.println("暱稱:"+super.nickname);
System.out.println("顏色:"+super.color);
System.out.println("品種:"+super.strain);
System.out.println("親密度:"+this.love);
super.printInfo();
}
}
public class Test {
public static void main(String[] args) {
Dog afu=new Dog();
afu.nickname="阿福";
afu.color="黑色";
afu.strain="哈士奇";
afu.love=100;
afu.lookHome();
System.out.println("----------------------------------------");
//調用Dog的帶參構造
Dog xiaohei=new Dog("小黑", "白色", "泰迪", 100);
xiaohei.lookHome();
}
}
包
創建包
package com.qf.test;
public class Employee {
private String name; //姓名
private int age; //年齡
private double salary; //薪水
public Employee(){
}
public Employee(String name, int age, double salary){ //構造方法
this.name = name;
this.age = age;
this.salary = salary;
}
}
導入包
爲使用定義在不同包中的Java類,需要import語句來引入所需要的類。
語法格式:
import package1[.package2…].類名
import com.qf.test.Employee;
public class PackageDemo {
public static void main(String args[]){
Employee employee = new Employee();
}
}
注意:
要導入某個包中的所有類可以用:包名.*
例如:import java.util.*;
在同一包中的類可以直接互相引用,無需import語句。
訪問權限
本類 | 同包中類或同包子類 | 不同包子類 | 不同包類 | |
---|---|---|---|---|
public | ok | ok | ok | ok |
protected | ok | ok | ok | error |
默認[default] | ok | ok | error | error |
private | ok | error | error | error |
個人記憶法 protected保護子類,default只保護包
使用原則:
- 修飾類時:只能public 或 默認的
- 修飾成員變量和方法:可以使用public 、默認、protected 、private
- 局部變量不能訪問權限修飾符。
重寫與重載
方法的重載:Overload,在同一個類中,方法名相同,參數類別不同,互爲重載方法。
方法的重寫:Override,在繼承過程中,在子類中重寫父類中繼承來的方法,方法名相同,參數列表、返回值必須相同,訪問權限不能比父類嚴格。