1.類與對象:
(1)類是一種抽象的數據類型,它是對某一類事務的整體描述或定義,但是並不能代表某一具體的事務。例如:人(人有姓名,年齡,性別等特徵);對象是抽象概念的具體事例。例如:趙雲就是人(類)的一個具體實例,趙雲家的旺財就是狗(類)的一個具體的實例。對象是展現出來的具體實例,而不是抽象的概念。
(2)類與對象的創建:
//這裏就是創建了一個Person類
public class Person(){
//每個類中又包含屬性以及方法
String name;
int age;
//方法
public void study(){
System.out.println(this.name+"人在學習");
}
}
類的實例化
public class Application(){
public static void main(String[] args){
Person TW=new Person();//先用new創建對象,這裏TW這個對象就是Person類的實例化
TW.name="小明";//在沒有賦值之前姓名默認爲null,年齡默認爲0
TW.age=21;
//輸出這個人的姓名以及年齡
System.out.println(TW.name);
System.out.println(TW.age);
}
}
(3)構造器:類中的構造器也稱構造方法,是在進行創建對象的時候必須要調用的,進行默認的初始化以及對類中構造器的調用,方法名稱必須與類名相同,不能有返回值類型,包括void也不能寫
public class Person(){
String name;
int age;
//構造一個無參構造器,並且進行實例化的初始化值
public Person(){}
//這裏一旦定義了有參構造器,在使用new來創建對象時無參構造器必須存在,否則就會報錯
public Person(String name,int age){
this.name=name;
this.age=age;
}
}
public class Application(){
public static void main(String[] args){
Person TW=new Person("小明",21);//傳參數
System.out.println(TW.name);
System.out.println(TW.age);
}
}
2.封裝
通常應禁止直接訪問一個對象中數據的實際顯示,而應通過操作接口來訪問,這個過程就稱爲封裝,封裝可以增加數據的安全性
public class person {
//當屬性進行私有以後,外部的就無法對屬性進行訪問,此時就要在內部獲得get和set方法
private String name;
private int age;
private int id;
/*一下就是獲得每個屬性的get和set方法,get方法是獲取值,set方法則是設置值
我是在vscode上來寫的,快速生成get和set的方法爲鼠標右鍵,然後選擇源代碼操作,
然後選擇Generate Getters and Setters,選中要生成get和set方法的屬性即可自動生成*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
//這裏可以自己對年齡加一個限制,可以過濾掉不合法的數據
if(age>120||age<0){
this.age = 2;
}else{
this.age = age;
}
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
public class Application(){
public static void main(String[] args){
Person TW=new Person();
TW.setName("小明");//修改信息用set方法
System.out.println(TW.getName());//獲取信息用get方法
TW.setAge(999);//這裏傳入的就是一個不合法的數據,根據判斷條件就會輸出2
System.out.println(TW.getAge());
}
}
3.繼承
繼承其實在生活中很常見比如兒子繼承父母的特徵,另外繼承在java中只有單繼承而沒有多繼承,繼承是類跟類之間的關係。
//父類
public class Person(){
public String name="TWQ";//如果這裏改成private則這個屬性就是父類獨有的,子類就不可以繼承此屬性
public int age=23;
public void say(){
System.out.println("世界那麼大我想去看看");
}
}
//子類
public class student extends Person{
}
public class Application(){
public static void main(String[] args){
student TW=new student();
//student中原本沒有age和say方法,但由於繼承則也會有父類的所有屬性以及方法
System.out.println(TW.name);
System.out.println(TW.age);
Tw.say();//這裏會輸出父類中say方法內部的輸出
}
}
4.多態
即同一方法可以根據發送對象的不同,而採用多種不同的行爲方式;一個對象的實際類型是確定的,但可以指向的對象的引用的類型就有很多;另外多態是方法的多態,屬性沒有多態。
public class Person(){
public void TWQ(){
System.out.println("son");
}
}
public class student extends Person{
//這個方法用來說明main中第二次調用,第一次調用的時候沒有這個
public void TWQ(){
System.out.println("eat");
}
}
public class Application(){
public static void main(String[] args){
//下面三個即爲多態的過程,即同一個學生類用不同的狀態表示
student t1=new student();
Person t2=new studnet();//父類的引用指向子類對象
Object t3=new student();//Object又稱爲祖宗類
t2.TWQ();//由於子類繼承父類方法,所以t2可以按照父類方法進行輸出,同理t1有人同樣可以輸出,顯而易見父類不能繼承子類的方法
//如果在子類student中重寫父類中的方法,則在運行方法時,都按照子類的來
t1.TWQ();//此時這倆輸出的結果都是按照子類的方法來的,也就是輸出eat
t2.TWQ();
}
}