Java
相信我們到這裏,都會想問,Java到底是什麼?
在這裏小北作爲菜菜,也很想發問?
所以從小北的角度,帶着疑問進行探索吧。
Java時面向對象的語言
相信很多和和小北一樣,都想問,什麼事面向對象?沒有對象的怎麼面>.<.
小北,帶着這個疑問,來了解
Java中的對象,是一個比較抽象的概念,抽象到什麼程度呢?
一切皆對象
當然不是讓愛情跨越物種和性別的意思哈。
在Java中,把能描述的物體都稱作對象。像小貓小狗啊,可能在現實中我們還不平等,在這裏,都是對象,猛一看沒啥區別<.>。所以,我們就可以理解成,在Java中,對象就是具體的☞某個實際存在的實例。
那我們怎麼來藐視這些實例呢,怎麼描述出我們是人不是貓,不是狗呢。需要用到類,這個概念。類說了什麼事呢,就說你又年齡,有名字,又一切能與別人不一樣的特徵,也描述了你能做什麼事->能做什麼動作。
那麼在這裏,類是什麼?對一類事物的描述
對象是什麼?一類事物的實例
事物有什麼呢:事物都有自己的特性和行爲
特性怎麼表示呢,我們用成員變量來表示
行爲怎麼表示呢,我們用方法來表示你做了什麼
如何創建一個類
public class Person {
//這裏我們創建一個人的類
/*
那我們想一下,人有什麼特徵
1.名字
2.年齡
3.性別
4.職業
人會做什麼?
人和動物的區別所在,就是人能說人話
方法:shuorenhua(speek)
*/
//創建以成員變量來表示特徵
String name;//姓名
int age;//年齡
String sex;//性別
String work;//工作,職業
//定義一下人說人話的方法
public static void speek(String name,int age,String sex,String work){
//輸出一下
System.out.println("我叫:"+name+",今年"+age+"歲,是個"+sex+work+".");
}
}
我們創建了Person類,但是我們怎麼實現想要整明我們能說人話,說自己是個人呢。
方法1:
public class Demo {
public static void main(String[] args) {
Person p=new Person();
//System.out.println(p);
p.name="zhangsan";
p.age=21;
p.sex="男";
p.work="程序員";
p.speek(p.name,p.age,p.sex,p.work);
}
}
方法2:
public class Demo {
public static void main(String[] args) {
Person p=new Person();
//System.out.println(p);
p.speek("zhangsan",21,"男","程序員");
}
}
輸出:
我們發現兩種方式都能輸出相同的結果。
在這裏我們說下,成員變量和成員方法如何使用
(對象名就是我們創建的Person p,p就是Person類創建的對象)
使用成員變量:對象名.成員變量名。
那麼第二種方法中,我們直接調用成員變量,通過傳遞參數的方法,直接給speek方法,傳遞參數,並沒有通過給成員變量賦值的方式去實現。
到這裏我們就接觸到了Java三大特性中的——封裝性
方法就是封裝的一種體現。
private也是一種封裝
關鍵字Private
在這裏可能很多人就有疑問了,怎麼突然又到關鍵字Private了,和private有什麼關係?
那我們剛剛用到的成員變量,是默認的,是任何類都能調用的。我們欸~,突然不想讓別人用了,那我們就在類中員變量最前面加上private。
然後我們突然發現我們自己怎麼也沒法調用成員變量了呢?
這時候,需要我們用到我們的getter和setter方法
在類中應用get和set方法
public class Person {
//這裏我們創建一個人的類
/*
那我們想一下,人有什麼特徵
1.名字
2.年齡
3.性別
4.職業
人會做什麼?
人和動物的區別所在,就是人能說人話
方法:shuorenhua(speek)
*/
//創建以成員變量來表示特徵
private String name;//姓名
private int age;//年齡
private String sex;//性別
private String work;//工作,職業
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getWork() {
return work;
}
public void setWork(String work) {
this.work = work;
}
//定義一下人說人話的方法
public static void speek(String name,int age,String sex,String work){
//輸出一下
System.out.println("我叫:"+name+",今年"+age+"歲,是個"+sex+work+".");
}
}
調用也發生相應的改變
public class Demo {
public static void main(String[] args) {
Person p=new Person();
//System.out.println(p);
p.setName("zhangsan");
p.setAge(21);
p.setSex("男");
p.setWork("程序員");
p.speek(p.getName(),p.getAge(),p.getSex(),p.getWork());
}
}
有沒有好奇爲什麼使用private關鍵字?
構造方法
我們在這裏討論下構造方法
構造方法是幹麼的?
是專門用來創建對象的方法
我們可以看下代碼
public class Person {
//這裏我們創建一個人的類
/*
那我們想一下,人有什麼特徵
1.名字
2.年齡
3.性別
4.職業
人會做什麼?
人和動物的區別所在,就是人能說人話
方法:shuorenhua(speek)
*/
//創建以成員變量來表示特徵
private String name;//姓名
private int age;//年齡
private String sex;//性別
private String work;//工作,職業
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getWork() {
return work;
}
public void setWork(String work) {
this.work = work;
}
public Person(String name, int age, String sex, String work) {
this.name = name;
this.age = age;
this.sex = sex;
this.work = work;
System.out.println("我叫:"+name+",今年"+age+"歲,是個"+sex+work+".");
}
}
我們將speek方法刪除,創建了全參構造方法
public class Demo {
public static void main(String[] args) {
Person p=new Person("zhangsan",21,"男","程序員");
}
}
再觀察我們的Demo類,發現我們創建對象時可以將參數直接寫到對象裏。
我們發現結果依然是原來的結果。
注意
1.構造方法的名稱必須和所在類的名稱完b相’y
2.構造方法不用返回值、類型、void也不需要
3.構造方法不能return一個具體的數值
4.如果沒有編寫任何構造方法,默認有一個
5.編寫至少一個構造方法,不會默認再有
6.構造方法也可以重載
總結
一個標準的類通常有四個組成部分
1.所有的變量都要使用private關鍵字修飾
2.爲每一個成員變量編寫一堆get/set
3.編寫一個無參構造方法
4.編寫一個有參構造方法