一、形式参数问题
数据类型:分为基本数据类型和引用数据类型。
基本数据类型:四类八种(整型byte int short long字符型char 布尔型boolean 浮点型float double)
引用类型:数组、接口、类
形式参数:
基本类型:就是该基本类型的数据值。
引用类型:要的是该引用类型的对象。
A:数组 要的是该数据类型数组的对象。(地址值)
B:类 要的是该类或者其子类的对象。(地址值)
C:抽象类 要的是该抽象类的子类对象。(地址值)
D:接口 要的是该接口的实现类对象。(地址值)
二、返回值问题
返回值:
基本类型:就是返回基本类型的数据值
引用类型:
返回值是类名:其实返回的是该类对象或者其子类对象。(地址值)
返回值是抽象类名:要的是该抽象类的子类对象。(地址值)
返回值是接口名:要的是该接口的实现类对象。(地址值)
三、权限修饰符
四、内部类
内部类:把累A定义在类B中,类A就被称为内部类。
访问特点:
A:内部类可以直接访问外部类的成员,包括私有。
B:外部类要访问内部类的成员,必须创建对象。
内部类分类:
成员位置:成员内部类
如何创建对象
外部类名.内部类名 对象名 = 外部类对象.内部类对象;
局部位置:局部内部类
内部类的关键词限定:
以Body 、Heart举例:
class Body {
private class Heart {
public void operator() {
System.out.println("给心脏搭个桥");
}
}
public void method() {
if(你是医生吗?) {
Heart h = new Heart();
h.operator();
}
}
}
直接访问:Body.Heart bh = new Body().new Heart();
bh.operator();
为了安全,不能让外界直接创建对象。通过private修饰内部类。
Body b = Body();
b.method();
成员内部类的修饰:
A:private 为了我们访问数据的安全性
B:static 为了我们访问数据的方便性
局部内部类:
A:可以直接访问外部类的成员,包括私有
B:在成员方法中创建局部内部类的对象,调用局部内部类的功能
匿名内部类:
没有名字的局部内部类,就是内部类的简化写法
前提:
存在一个类或者接口
这里的类可以是具体类也可以是抽象类。
格式:
new 类名或者接口名() {
重写方法;
};
本质:
是一个继承了类或者实现了接口的子类匿名对象。
例子、在类中创建一个方法,引用接口,将其实例化,在通过另一个类调用此方法
interface Inter { void show(); }
class Outer {
public static Inter method(){
return new Inter(){
public void show(){
System.out.println("helloworld");
}
};
}
}
class InnerClassTest {
public static void main(String[] args) {
Outer.method().show();
}
}