一、类名作为形参
1、表示可以传递本类对象的引用作为实参
2、可以传递本类子类的对象的引用
3、可以传递null,但会报NullPointerException异常
一、抽象类作为形参
1、使用抽象类作为形参意味着可以接受一个他的子类的对象的引用,即将子类的对象的引用作为参数传到方法中
2、可以传递null,但会报NullPointerException异常
二、接口作为形参
1、使用接口作为形参意味着可以使用这个接口的实现类的对象的引用作为实参传递给方法
2、可以传递null,但会报NullPointerException异常
三、类名作为方法的返回值类型(返回一个对象的引用)
1、一个方法的返回值类型声明为一个类类型,这个方法可以返回以下类型:
1、返回此类对象的一个引用
Class Student{}
Class Demo{
static void main(String[] args){
Student s = new method();
}
Public static Student method(){
Student stu =new Student();
Return stu;
}
}
2、可以返回null。如果调用的方法的返回值是一个引用类型,在使用前最好先进行判断返回的值是不是null。
3、可以返回此类子类对象的引用。如果方法的返回值类型是父类类型,可能返回的是父类对象的引用,也可能返回任何子类对象的引用,所以不确定是哪个子类,所以不能具体的子类变量接受,只能用父类接受。如果确定了方法返回的哪个子类对象的引用,则可以将方法的返回值强转为对应子类的类型,此时可以直接用此子类类型来接受方法返回的地址。此规则同样适用于抽象类和接口作为返回值类型的情况。
四、抽象类作为方法的返回值类型(返回一个对象的引用)
1、方法的返回值类型为“抽象类”类型意味着:
1/1 这个方法会返回这个抽象类的子类对象的引用。由于不确定是具体的某个子类类型,所以,不能用子类类型来接受返回值,只能用抽象类类型接收,同类名作为方法的返回值。
五、abstract不能和哪些关键字共存:
1.private:因为一个抽象方法就是被子类重写的。要重写就必须不能为private的。
2.final:因为一个抽象方法就是被子类重写的。而final表示:最终方法,不能被重写。所以这两个关键字冲突;
作用在"类"上也是一样:一个抽象类就是用来被继承的。而final类:表示最终类,不能被继承。所以也是冲突;
3.static:因为一个抽象方法没有方法体。所以不能定义为static的。因为无法被分配空间;
六、接口作为方法的返回值类型(返回一个对象的引用)
1、接口作为方法的返回值意味着:
1/1 这个会返回此接口的子类的对象的引用。由于不确定具体是哪个子类,所以,不能用子类类型来接收返回值,只能用接口类型
2、可以返回null