瘋狂JAVA講義個人筆記——第四章
看到了面向物件(上),GOD,搞了我1天多了,終於搞清楚4.1的各種靜態與非靜態的呼叫,所以先寫點筆記吧~
類,就是class,就是現在寫的程式第一行public class 什麼的就是類
他裡面包含了很多東西,現在寫過最多的就是方法,比如main方法
同時,他裡面還可以寫變數,還有一個叫構造器,暫時沒搞明白是什麼
如果現在要使用這個類去幹什麼怎麼做呢?
要麼直接呼叫這個類,比如我之前類名都是atlas,那麼用裡面的方法就是atlas.run();
要麼就建立一個變數代表它,atlas a=new atlas(); 就是創造了一個叫a的東西,他就代表了atlas,之後可以執行a.run
但是呢,就會有一個很繞的東西,簡單說就是"靜態成員不能直接訪問非靜態成員,非靜態成員可以相互訪問,非靜態成員訪問靜態成員需要直接用類效用靜態成員,靜態成員需要建立物件去訪問非靜態成員"
是不是聽起來崩潰了》。。。。。
這本書我第一次感覺寫的不好的就是這裡,對於物件和例項這兩個詞,一會用這個一會用那個,其實一個意思,暈。還有就是,特別繞........還好我繞出來了
大概就是,如果有一個方法帶有static那麼你在同一個類裡面用的時候直接用就好了,或者加this
如果木有的話,你就需要先建立一個這個class的物件之後再呼叫這個方法
public class atlas{ public static void main(String[] args){ this test1(); atlas a=new atlas(); a.test2(); } public static void test1(){ System.out.println("This is test1"); } public void test2(){ System.out.println("This is test2"); } }
寫這個部落格也是糾結,看了好久,不斷地編輯,之後還得上傳稽核,暈。
廢話不多說,今天看到的是封裝,傳說中面向物件的三大特徵之一,簡單的說也就是,別人不能直接對類變數進行操作,需要經過一定的方法
簡單的講就是判斷一下防止使用者輸入錯誤,複雜的來說,就是提高程式碼效率吧......
我覺的這個例題很經典,發一下
首先定義一個叫person的類,兩個例項變數都是private的,只能通過方法改修改這兩個變數的值
之後測試一下public class Person{ private String name; private int age; public void setName(String name){ if (name.length()>6 ||name.length()<2){ System.out.println("您輸入的姓名不合法"); return; }else{ this.name=name; } } public String getName(){ return this.name; } public void setAge(int age){ if (age>100 || age<0){ System.out.println("您設定的年齡不合法"); return; }else{ this.age=age; } } public int getAge(){ return this.age; } }
import java.util.*;
public class atlas{
public static void main(String[] args){
Person p=new Person();
System.out.println("請輸入年齡");
Scanner in =new Scanner(System.in);
int a=in.nextInt();
p.setAge(a);
System.out.println(p.getAge());
}
}
同時學到的還有setter和getter的方法,也就是學java的專業人士預設的方法,基本上要改變變數先要通過setter,獲取變數需要通過getter,好,繼續看