今天學習主要學習的的是靜態變量的概念及其使用。下面是我關于靜態變量的一些看法。
靜態變量通俗的說是屬于類的屬性。如果一個類要進行實例化,通過實例可以調用靜態變量,類名也可以直接調用靜態變量。如果實例化兩個類的話。被static修飾的變量相當于是兩個公共的屬性。其中一個實例修改靜態變量的話。那么其他的實例再進行調用的話會調用被修改的那個實例。例如以下代碼就是可以清晰的顯示出靜態變量的的相關使用。變量a和變量b是靜態變量。
public class Test1 {public static void main(String[] args) {System.out.PRintln(A.a);A a1 = new A();A a2 = new A();System.out.println("修改之前 "+a1.a);System.out.println("修改之前 "+a2.a);a1.a = 12;System.out.println("修改之后 "+a1.a);System.out.println("修改之后 "+a2.a);System.out.println("修改之前 "+a1.c);System.out.println("修改之前 "+a2.c);a1.show(34);System.out.println("修改之后 "+a1.c);System.out.println("修改之后 "+a2.c);B b1 = new B();b1.get();B.get1();b1.get1();
System.out.println("通過類名直接調用"+A.a);}}class A {static int a = 5;static int b = 7;int c = 45;public void show (int c) {this.c = c;}}class B {int a = 5;static int b = 45;public void get () {System.out.println(a);}static void get1 () {System.out.println(b);}}
同理可得,靜態方法的使用和概念是跟靜態變量相同的,可看成一個是靜態的屬性(靜態變量),一個是動態的屬性(靜態方法)。
構造器
當然對于java,類的概念是重中之重,對于類的構造和對象的實現就需要用到構造器。
構造器具有初始化的作用。 例如public class Person(){ private string name; private int number; public Person(string n,int no){ name=n; number=no; } public teach(){} } 下面我們要對這個類的對象實例化:Person p = new Person(); 以上就是構造器的語法了,這里用到了關鍵字來調用構造器。 new 講到這里還沒有什么可以困擾我們的地方,那么下面我們將借助有關繼續的一些例子來繼續闡述構造器問題: 假設publicclass People(){ private string name; private int number ; private int age; public do(){} } 有人也許會問為什么這個People類里面為什么沒有定義構造器?其實,java中的JVM已經我們定義了一個無參數的默認構造器,即People(){} 到這里為止,沒有任何問題,然而,一旦讓People繼承OldPeople并實例化,編譯器就會報錯: public class People extendsOldPeople(){ private string name; private int number ; private int age; public do(){} public static void mian(string[] args){ OldPeople o=new OldPeople(); } 很抱歉你得到的是一條出錯的信息,有人問了,你說OldPeople的構造器是默認的我才這樣寫,沒錯,OldOldPeople確實存在這樣一個無參的構造器,這樣寫法換做OldPeople不做People的子類的情況下一定是正確的。 構造器的相關規則: 1.假如一個類沒有設置字定義構造器,那么編譯器會默認一個無參構造器。 2.在子類調用構造器時,優先調用父類的構造器。 3.假如自定義了構造器,那么默認構造器將不存在。 在上例中,OldPerson調用默認構造器前,編譯器自動調用父類Professer的默認構造器,然而,Person有了自定義構造器,所以默認構造器不存在了,編譯器報錯………… 那么我們該怎么做呢?像下面這樣就OK了。 public class People extends OldPeople(){ private string name; private int number; private int age; OldPeople(string n,int no,int age){ super(n,no); this.age=age; } public do(){} } 這就是在子類中顯式的調用父類構造器,注重,super必須是{}中的第一個執行語句。其實我們還有另外一種方法,在People類里面補充一個消失掉的默認構造器,如下: public class People(){ private string name; private int number; public People(string n,int no){ name=n; number=no; } People(){} public teach(){} } 構造器盡量使用的功能是傳參數的功能,不要包含太多的操作語句即可。
如下例子:通過構造器將變量a,和變量b的值賦值。之后通過實例化對象進行調用方法。
import java.util.Scanner;public class Count {public static void main(String[] args) {System.out.println("請輸入第一個數字");Scanner in = new Scanner(System.in);int a = in.nextInt();System.out.println("請輸入第二個數字");int b = in.nextInt();Count1 co = new Count1 (a,b);co.add();co.sub();co.mul();co.div(); }}class Count1 {int a ;int b ;public Count1 (int a,int b) {this.a = a;this.b = b;}public void add() {int d = a + b;System.out.println(d);}public void sub() {int e = a - b;System.out.println(e);}public void mul() {int f = a/b;System.out.println(f);}public void div() {int g = a / b;System.out.println(g);}}
今天就寫到了。
新聞熱點
疑難解答