1. 程式人生 > >java知識點記錄(持續更新)

java知識點記錄(持續更新)

1.如果另一個類中的那個方法是私有的話,就不能直接呼叫到,如果是其他型別的話看情況,如果是靜態的(static)話,直接用類名可以呼叫到,如果是非靜態的,就需要利用另一個類的例項(也就是用那個類生成的物件 new一個來呼叫)來呼叫。 舉例 class A{ public static void a(){} public void b(){} } public class B{ public static void main(String[] args){ A.a();//靜態 new A().b();//非靜態 } }

2.介面的定義上不需要abstract  因為介面本生就是抽象的。

  這邊區分抽象類。 

抽象類

抽象類是用來捕捉子類的通用特性的 。它不能被例項化,只能被用作子類的超類。抽象類是被用來建立繼承層級裡子類的模板。以JDK中的GenericServlet為例:

1

2

3

4

5

6

7

8

9

public abstract class GenericServlet implements Servlet, ServletConfig, Serializable {

// abstract method

abstract void service(ServletRequest req, ServletResponse res);

void init() {

// Its implementation

}

// other method related to Servlet

}

當HttpServlet類繼承GenericServlet時,它提供了service方法的實現:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

public class HttpServlet extends GenericServlet {

void service(ServletRequest req, ServletResponse res) {

// implementation

}

protected void doGet(HttpServletRequest req, HttpServletResponse resp) {

// Implementation

}

protected void doPost(HttpServletRequest req, HttpServletResponse resp) {

// Implementation

}

// some other methods related to HttpServlet

}

介面

介面是抽象方法的集合。如果一個類實現了某個介面,那麼它就繼承了這個介面的抽象方法。這就像契約模式,如果實現了這個介面,那麼就必須確保使用這些方法。介面只是一種形式,介面自身不能做任何事情。以Externalizable介面為例:

1

2

3

4

5

6

public interface Externalizable extends Serializable {

void writeExternal(ObjectOutput out) throws IOException;

void readExternal(ObjectInput in) throws IOException, ClassNotFoundException;

}

當你實現這個介面時,你就需要實現上面的兩個方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

public class Employee implements Externalizable {

int employeeId;

String employeeName;

@Override

public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {

employeeId = in.readInt();

employeeName = (String) in.readObject();

}

@Override

public void writeExternal(ObjectOutput out) throws IOException {

out.writeInt(employeeId);

out.writeObject(employeeName);

}

}