1.类名作为形参和返回值
方法的形参是类名,其实需要的是该类的对象
方法的返回值是类名,其实返回的是该类的对象
把类理解成和int String一样的东西,形参是类名,相当于需要这个类的对象,返回值是类名,需要返回的是这个类的对象
2.抽象类名作为形参和返回值
1.方法的形参是抽象类名,其实需要的是该抽象类的子类对象
2.方法的返回值是抽象类名,其实返回的是该抽象类的子类对象,
3.接口名作为形参和返回值
1.方法的返回值是接口名,其实需要的是该接口的实现类对象
2.方法的返回值是接口名,其实返回的是该接口的实现类对象
内部类
内部类概述:
内部类:就是在一个类中定义一个类.
举例:在一个类A中定义一个类B,B被称为内部类
内部类的定义格式:
直接套娃
内部类的访问特点:
内部类可以直接访问外部类的成员,包括私有
外部类要访问内部类的成员,必须创建对象(先创建内部类的对象,通过这个对象调用内部类中的成员或者方法)
成员内部类
按照内部类在类中定义的位置不同,可以分为如下两种形式
在类的成员位置:成员内部类
在类的局部位置:局部内部类(在类的方法里面定义的内部类)
成员内部类,外界如何创建对象使用?
格式:外部类名.内部类名 对象名=外部类对象.内部类对象
Outer.Inner oi=new Outer().new Inner();
内部类用来隐藏这个内容,并不想让外界直接访问这个里面的内容
所以一般把内部类修饰符设定为private,只能通过这个外部类中构建成员方法,间接的访问内部类的东西
(外部类创建对象访问内部类里面的方法)
局部内部类
局部内部类是在方法中定义的类,所以外界是无法直接使用,需要在方法内部创建对象并使用
该类可以直接访问外部类的成员,也可以访问方法内的局部变量
匿名内部类(局部内部类的一种形式)
前提:存在一个类或者接口,这里的类可以是具体类也可以是抽象类
new 类名或者接口名(){
重写方法
};
范例:
new Inter(){
public void show(){
}
}
本质:是一个继承了该类或者实现了该接口的子类的匿名对象