方法參數以及返回值問題研究
形式參數是基本類型要的是具體數值,是類名要的是子類的對象,是抽象名要的是抽象類的子類對象,是接口名要的是接口的實現類的子類對象。
基本類型
public class MyTest {
public static void main(String[] args) {
Student student = new Student();
setStudent(student,100);
student.show(new Student(),18);
System.out.println(student.num); //18
}
private static void setStudent(Student student,int num) {
student.num=num;
}
}
class Student{
int num=20;
public void show(Student student,int num){
this.num=num;
}
}
抽象類型
public class MyTest2 {
public static void main(String[] args) {
MyClasss aa = new AA();
setMyClss(aa, 200);
System.out.println(aa.num); //10
}
private static void setMyClss(MyClasss myClss, int num) {
myClss.show(num);
}
}
abstract class MyClasss {
int num = 10;
public abstract void show(int num);
}
class AA extends MyClasss {
int num = 20;
@Override
public void show(int num) {
this.num = num;
}
}
接口類型
public class MyTest3 {
public static void main(String[] args) {
MyInterface bb = new BB();
setInterface(bb,600);
System.out.println(bb.num);//100
System.out.println(MyInterface.num); //100
}
private static void setInterface(MyInterface myInterface,int num) {
myInterface.show(num);
}
}
interface MyInterface{
int num=100;
void show(int num);
}
class BB implements MyInterface{
int num=500;
@Override
public void show(int num) {
this.num=num;
}
}
2.
返回值類型是基本類型返回的是具體值,是類名返回的是類的子類對象,是抽象類要的是該抽象類的子類對象,是接口要的是該接口的實現類的對象。
權限修飾符
四個權限修飾符的等級排列:
public>protected>默認的>private
-
修飾符:
權限修飾符:private,默認的,protected,public
狀態修飾符:static,final
抽象修飾符:abstract -
修飾類的關鍵字:
權限修飾符:默認修飾符,public
狀態修飾符:final
抽象修飾符:abstract -
修飾成員變量的關鍵字:
權限修飾符:private,默認的,protected,public
狀態修飾符:static,final -
修飾構造方法的關鍵字:
權限修飾符:private,默認的,protected,public -
修飾成員方法的關鍵字:
權限修飾符:private,默認的,protected,public
狀態修飾符:static,final
抽象修飾符:abstract -
除此以外的組合規則:
成員變量:public static final
成員方法:public static
public abstract
public final
內部類
概述:在類裏面定義了一個類,這個類就被稱作把內部類。
1.內部類可以直接訪問外部裏的成員,包括其私有的;但是外部類要想訪問內部類必須要創建其對象。
2.訪問成員內部類的格式:外部類名.內部類名 對象名=外部類對象.內部類對象;
3.成員內部類被靜態修飾後的訪問方式是格式:外部類名.內部類名 對象名=new 外部類對象.內部類對象;
匿名內部類
-
具備內部類的簡化形式。
-
存在的前提:存在一個類或者接口,這裏的類可以是具體類也可以是抽象類。
-
本質:一個繼承了該類或實現了該接口的子類匿名對象。
-
格式:
new 類名或者接口名(){
重寫方法;
} ; -
普通類的匿名內部類對象
public class MyTest {
public static void main(String[] args) {
VV vv= new VV(){
@Override
public void test() {
}
};
vv.test();
}
}
class VV {
public void test() {
}
} -
抽象類的匿名內部類對象
public class MyTest2 {
public static void main(String[] args) {
set(new MyClass() {
@Override
public void show() {
System.out.println(“aaaaaaaaaaaaaaaaaa”);
}
});
MyClass my= new MyClass() {
@Override
public void show() {
System.out.println(“aaaaaaaabbbbbbbbbbbbbbbbbbbaaaaaaaaaa”);
}
};
set(my);
public static void set(MyClass myClass){
myClass.show();
}public static void set2(WW ww) {
ww.hehe();
}
}
abstract class MyClass{
public abstract void show();
}
interface WW{
void hehe();
}
Object
public boolean equals(Object obj)
指示相比較的兩個對象是否相等 比的是地址。
public final Class getClass()
返回此object的運行時類,可以通過class類中的一個方法,獲取對象的真實類的全名稱。
public int hashCode()
返回該對象的哈希碼值。默認情況下,該方法會根據對象的地址來計算。同一對象哈希碼值一般相同。哈希碼值是對象的邏輯地址值。
public String toString()
返回該對象的字符串表示