引用类型作为形参和返回值
一、类名作为形参和返回值
- 方法的形参是类名,需要的是该类的对象
- 方法的返回值是类名,返回的是该类的对象
二、抽象名作为形参和返回值
- 方法的形参是抽象名,需要的是该抽象类的子类对象
- 方法的返回值是抽象名,返回的是该抽象类的子类对象
三、接口名作为形参和返回值
- 方法的形参是接口名,需要的是该接口的实现类对象
- 方法的返回值是接口名,返回的是该接口的实现类对象
内部类
一、概述
在类中定义一个类。
举例:在一个类A的内部定义一个类B,类B就称为内部类。
内部类定义格式:
public class 类名{
修饰符 class 类名{
}
}
范例:
public class Outer{
public class Inner{
}
}
访问特点:
- 内部类可以直接访问外部类的成员,包括私有
- 外部类要访问内部类的成员必须创建对象
按照内部类在类中定义的位置不同,可以分为如下两张形式:
- 在类的成员位置:成员内部类
- 在类的局部位置:局部内部类
成员内部类对象创建格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象(内部类是public修饰符修饰的,private修饰的这种方法不行)
范例:Outer.Inner oi = new Outer().new Inner();
三、局部内部类和匿名类1.局部内部类是在方法体中定义的类,所以外界是无法直接使用的,需要在方法内部创建对象并使用,该类可以直接访问外部类的成员,也可以访问方法内部的局部变量。
2.匿名内部类(特殊的局部内部类)
前提:存在一个类或接口,这里的类可以是具体类也可以是抽象类
格式:new 类名或接口名(){
重写方法;
}; //有个分号
范例:new Inter(){
public void show(){
}
}; //有个分号
本质:是一个继承了该类或者实现了该接口的子类匿名对象
3.匿名类案例
要求:有个接口类,里面有个方法jump();有个接口操作类,里面有个method()方法,方法的参数是接口名;在测试类中创建接口操作类对象,调用method()方法。
代码:
接口:
package NiMing;
public interface Jump {
void jump();
}
接口操作类:
package NiMing;
public class JumpOperator {
public void method(Jump j){
j.jump();
}
}
测试类:
package NiMing;
public class Demo {
public static void main(String[] args) {
JumpOperator jo = new JumpOperator();
jo.method(new Jump() {
@Override
public void jump() {
System.out.println("猫可以跳高了");
}
});
}
}



