下面是自己學習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對象。
那麼,想要什麼取什麼。