java初學都必須懂得的概念(用代碼說明)

下面是自己學習java以來的一些小的總結,可能有些錯誤,望您多多指點!!!

1 . final變量   定義以後就要賦值
package one;

public class A
 final int age=23;
}

下面討論的是繼承的問題:
2
package one;

public class A {

 public void getRun(){
  System.out.println("我是一個普通方法!");
 }
}

package one;

public class B extends A{
 public static void main(String args[])
 {
  B  b=new B();//非靜態方法,,所以先實例化,然後才能調用!!
  b.getRun();
 }
}

3
package one;

public class A {

 public static void getRun(){
  System.out.println("我是一個靜態方法!");
 }
}

package one;

public class B extends A{
 public static void main(String args[])
 {
  B.getRun();//主方法裏面是靜態方法,所以不用實例化,直接就可以調用 了!
 }
}
4
java裏默認的類是public所以變量是public  ,而C#裏默認的類是private所以變量也是private


5
如果
package one;

public class A {

private  static void getRun(){
  System.out.println("我是一個靜態方法!");
 }
}
後面的
public class B extends A{
public static void main(String args[])
 {
  B.getRun();//出現Exception
 }
}
只有是public ,protect,或者默認的纔不會出現Exception.

5
protected 和 **ult的區別!!
主要是訪問權限的區別:
protected修飾的方法 只有他的子類(同包或異包)以及在同一包下面的類可以訪問.
default修飾的方法 一定得同一包下面的類才能訪問,如果是它不同包下的子類都不能對其方法進行範圍的!

package one;

public class A {
     static void getRun(){
  System.out.println("我是一個靜態方法!");
 }
}

package two;

import one.A;
public class B extends A{
 public static void main(String args[])
 {
  B.getRun();//出現Exception
 }
}

6 java裏的void ~~~


package one;

public class A {
    public void getRun(){                                      //沒有返回值,所以定義爲void
  System.out.println("我是一個普通的方法!");

     }
    public int getMax(int a,int b){           //有返回值,並且返回值類型爲int
     int max=a>b?a:b;
     return max;

    }
}


7  實例直接調用!
package one;

public class A {
    public void getRun(){
  System.out.println("我是一個普通的方法!");

     }
    public int getMax(int a,int b){
     int max=a>b?a:b;
     return max;

    }
    public static void main(String args[]){
     new A().getRun();      //相當於A a=new A(); a.getRun();
    }
}

8 接口interface與抽象類abstract
 
只要是抽象類,裏面是一定是抽象方法,抽象方法是可以去實現的.
而接口類似於抽象類.裏面是抽象方法是不能實現的,必須通過另外
類去實現(implements)這個接口.然後實現接口裏面的所有抽象方法.
兩者都不能繼承...

package one;

public interface C {
 public void getRun(){
  //這裏是錯誤的,不能去實現接口裏的方法,只能定義.
 }

}

正確的是:
package one;

public interface C {
 public void getRun();

}

定義一個類implements 接口C

package one;

public class D implements  C {

 
 public void getRun() {
// 
 }

}


抽象類:

下面的代碼是錯誤的.
package one;

public abstract class E {

 public  void getRun() { 
    System.out.println("我喜歡跑步");
 }
 public static void main(String args[]){
   new E.getRun();
 }
}

正確的代碼如下:
package one;

public abstract class E {

 public static void getRun() { 
    System.out.println("我喜歡跑步");
 }
 public static void main(String args[]){
      E.getRun();
 }
}

9.封裝類.

// 用戶類
class User {
    // 用戶類的成員變量(分別對應User表中的屬性)
    private String name;
    private String password;
    private String email;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    // ... 其他變量也定義Getter()和Setter()方法。
}
// 用戶數據控制類
class UserTest {
   
    public static void main(String[] args) {
        // 定義一個用戶對象,且初始化
         User u = new User();
        u.setName("zhangsan");
        u.setPassword("123456");
        u.setEmail("[email protected]");
        // 直接傳User類的對象就可以了。
         // 中間經過的類不用關心User類每個屬性。
         // 調用其他類,傳遞這個類
         UserDB ud = new UserDB();
         ud.save();
    }
}
// 負責保存到數據庫的類。
class UserDB {
   
    // 保存到數據庫。
    public void save(User u) {
        // 這裏就可以得到User類裏的所有要保存的數據了。
         // 保存。。。
    }
}


取的時候就更簡單了,取出來的時候包裝成一個User對象。
那麼,想要什麼取什麼。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章