方法参数类型及返回值类型
-
类名作为形式参数
一个方法的形参要一个 类 类型,你就传递一个该类的对象
-
抽象类名作为形式参数
一个方法的形参要一个抽象类 类型,你就传递一个该抽象类的子类对象
-
接口名作为形式参数
一个方法的形参要一个接口 类型,你就传递一个该接口的子类对象
-
类名作为返回值
一个方法的返回值类型是一个类 类型,你就返回一个该类的对象
-
抽象类名作为返回值类型
一个方法的返回值类型是一个抽象类 类型,你就返回一个该抽象类的子类对象
-
接口名作为返回值类型
一个方法的返回值类型是一个接口 类型,你就返回一个该接口的子类对象
四种权限修饰符
-
四种权限修饰符:
private 私有的
默认
protected 受保护的
public 公共的
-
结论
本类 | 同一个包下(子类和无关类) | 不同包下(子类) | 不同包下(无关类) | |
---|---|---|---|---|
private | Y | |||
默认 | Y | Y | ||
protected | Y | Y | Y | |
public | Y | Y | Y | Y |
-
类及其组成所使用的常见修饰符
3.1 修饰符
权限修饰符:private,默认的,protected,public
状态修饰符:static,fina
抽象修饰符:abstract
3.2 修饰类的关键字
权限修饰符:默认修饰符,public
状态修饰符:final
抽象修饰符:abstract
3.3 修饰成员变量的关键字
权限修饰符:private,默认的,protected,public
状态修饰符:static,final
3.4 修饰构造方法的关键字
权限修饰符:private,默认的,protected,public
3.5 修饰成员方法的关键字:
权限修饰符:private,默认的,protected,public
状态修饰符:static,final
抽象修饰符:abstract
3.6 除此以外的组合规则
成员变量:public static final
成员方法:public static
public abstract
public final
内部类
-
内部类概述:把类定义在其他类的内部,这个类就被称为内部类
-
内部类访问特点
内部类可以直接访问外部类的成员,包括私有
外部类访问内部类成员,必须创建对象
-
内部类访问及其特点
public class Demo {
public static void main(String[] args) {
Outer.Inter inter = new Outer().new Inter();
inter.show1();
}
}
class Outer{
int num=20;
public void show(){
System.out.println("wai show");
}
class Inter{
int num1=50;
public void show1(){
System.out.println("nei show");
System.out.println(num);
System.out.println(num1);
show();
}
}
}
-
内部类分类及成员内部类的直接使用
4.1 按照内部类位置分类
成员位置:在成员位置定义的类,被称为成员内部类
局部位置:在局部位置定义的类,被称为局部内部类
4.2 成员内部类在测试类中怎样直接访问内部类的成员
格式:外部类名.内部类名 对象名=外部类对象.内部对象类;
-
成员内部类的常见修饰符
5.1 成员内部类的修饰符
private 为了保护数据的安全性
static 为了方便访问数据
注意事项:
静态内部类访问的外部类数据必须用静态修饰
成员方法可以是静态的也可以是非静态的
-
局部内部类访问局部变量的问题
6.1 可以直接访问外部类成员
6.2 可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能
6.3 局部内部类访问局部变量必须用final修饰
-
匿名内部类
7.1 匿名内部类:就是局部内部类的简化写法
7.2 前提:存在一个类或者接口;这里的类可以是具体类也可以是抽象类
7.3 格式:
new 类名或者接口名(){
重写方法;
};
7.4 本质:是一个继承而来该类或者实现了该接口的子类匿名对象
7.5 建立一个匿名内部类
public class Demo {
public static void main(String[] args) {
Outer outer = new Outer();
outer.method();
}
}
class Outer{
public void method(){
new Aa() {
@Override
void show() {
System.out.println("aa");
}
}.show();
}
}
class Aa{
void show(){}
}