上一篇文章:Java中的數學函數、執行個體成員與類成員
本篇内容
- 方法重載
- this關鍵字
-
- 用在執行個體方法中調用成員變量
- 方法體内部的局部變量與成員變量重名時
- 用在構造方法中調用本類體中的方法
- 用在構造方法中調用本類體中其他的構造方法
- 下一篇文章
Java中的兩種多态:重載(Overload)和重寫(Override),重寫是與繼承 *有關的多态。
方法重載
方法重載 通俗講就是在類體中定義了一些方法名相同的方法。雖然方法名相同,但是每個方法的參數個數或參數類型不同,以此來區分不同的方法,防止歧義。
class Compute { //Compute類
static int aplusb(int x, int y){ //定義一個類方法
return x + y;
}
static double aplusb(double x, int y){
return x + y;
}
static float aplusb(float x, int y){
return x + y;
}
}
public class Example {
public static void main(String args[]){
System.out.println(Compute.aplusb(3, 3)); //類方法可以通過類名直接調用
System.out.println(Compute.aplusb(3.0, 3));
System.out.println(Compute.aplusb(3.0F, 3));
}
}
class Compute {
float aplusb(int a, int b){ //執行個體方法
return a + b;
}
static double aplusb(double a, int b){ //類方法
return a + b;
}
}
class Example {
public static void main(String args[]){
System.out.println(Compute.aplusb(3.0, 3)); //類方法通過類名直接調用
//執行個體方法使用前必須先建立一個該類的對象
Compute com = new Compute(); //建立一個名為com的Compute類對象
System.out.println(com.aplusb(3, 3));
System.out.println(com.aplusb(3.0, 3)); //建立的對象既可以調用執行個體方法,也可以調用類方法
}
}
this關鍵字
用在執行個體方法中調用成員變量
在執行個體方法中使用成員變量
this.成員變量名
class A {
int num = 666;
void outPut(){
System.out.println("成員變量num: "+this.num);
}
}
public class Example {
public static void main(String args[]){
A a = new A();
a.outPut();
}
}
一般情況下,沒有局部變量與成員變量重名,this都是省略的:
class A {
int num = 666;
void outPut(){
System.out.println("成員變量num: "+num);
}
}
public class Example {
public static void main(String args[]){
A a = new A();
a.outPut();
}
}
方法體内部的局部變量與成員變量重名時
//使用this關鍵字之前
class A {
int num = 666; //成員變量
void outPut(){ //定義了一個無傳回值的方法
int num = 777; //局部變量num與成員變量num重名了
System.out.println("此時輸出的num是局部變量num"+num);
}
}
public class Example {
public static void main(String args[]){
A a = new A(); //建立一個A類的對象a
a.outPut(); //調用方法
}
}
//使用this關鍵字之後
class A {
int num = 666; //成員變量
void outPut(){ //定義了一個無傳回值的方法
int num = 777; //局部變量num與成員變量num重名了
System.out.println("此時輸出的num是成員變量num"+this.num);
}
}
public class Example {
public static void main(String args[]){
A a = new A(); //建立一個A類的對象a
a.outPut(); //調用方法
}
}
用在構造方法中調用本類體中的方法
class Example {
Example(){
this.outPut(); //在構造方法中調用本類體當中的方法
}
void outPut(){
System.out.println("java程式設計真有趣");
}
public static void main(String args[]){
Example a = new Example();
}
}
為了簡化,在這種情況下,this關鍵字也可以省去:
//在這種情況下,this關鍵字也可以省去
class Example {
Example(){
outPut(); //在構造方法中調用本類體當中的方法,省去this關鍵字
}
void outPut(){
System.out.println("java程式設計真有趣");
}
public static void main(String args[]){
Example a = new Example();
}
}
用在構造方法中調用本類體中其他的構造方法
class Example {
int a;
int b;
double c;
Example(int x, int y){
a = x;
b = y;
}
Example(int x, int y, double z){
this(x, y); //調用了上面的那個構造方法
c = z;
}
public static void main(String args[]){
Example a = new Example(666, 999, 1.314);
System.out.println(a.a);
System.out.println(a.b);
System.out.println(a.c);
}
}
這種寫法是為了簡化寫法,等效于:
class Example {
int a;
int b;
double c;
Example(int x, int y){
a = x;
b = y;
}
Example(int x, int y, double z){
a = x;
b = y;
c = z;
}
public static void main(String args[]){
Example a = new Example(666, 999, 1.314);
System.out.println(a.a);
System.out.println(a.b);
System.out.println(a.c);
}
}
下一篇文章
Java中的包、import語句、通路權限