内部类:
将类写在其他类的内部的类,可以写在其他类的成员位置和局部位置
class 汽车{ //外部类
class 发动机{ //内部类
}
}
调用外部类中的内部类的方法
依靠外部类对象,找到内部类对象,通过内部类对象,调用内部类的方法;
格式:
外部类名.内部类名 变量 = new 外部类对象().new 内部类对象();
局部内部类:
public class out{
public void A(){
public class inner{
public void B(){
}
}
new out().B();
}
}
想要调用内部类方法,需要创建内部类对象
匿名内部类:创建的接口,在测试类中,建立接口的对象(一般情况下不能创界接口的对象) ,但可以这样写:
new Smoking(){ 重写接口的抽相关方法 } ;
// 以上为子类的对象 ,但这样不会有结果,因为没有调用方法,所以,要有方法,需要在分号前调用方法 .接口中抽象的方法()
若抽象类中有多个抽象方法,而上述只能调用一个方法,要想调用多个方法,需要创建父类的变量 = 子类的对象,然后用父类的变量名调用子类的多方法;
不写变量的范围, 如 int i ;
则为默认的,即只能在包内调用,两个类不在同一个包时,A包中继承B包中的类时,需要导入B包,还需要确认B包中的变量权限,是否可以调用,如果为默认权限,就不能调用
静态代码块,无论new 几次,只执行一次,
构造代码块,new一次,执行一次,且优先于构造方法
构造方法,new一次,执行一次,
顺序:静态代码块-> 构造方法代码块-> 构造方法
将类写在其他类的内部的类,可以写在其他类的成员位置和局部位置
class 汽车{ //外部类
class 发动机{ //内部类
}
}
调用外部类中的内部类的方法
依靠外部类对象,找到内部类对象,通过内部类对象,调用内部类的方法;
格式:
外部类名.内部类名 变量 = new 外部类对象().new 内部类对象();
局部内部类:
public class out{
public void A(){
public class inner{
public void B(){
}
}
new out().B();
}
}
想要调用内部类方法,需要创建内部类对象
匿名内部类:创建的接口,在测试类中,建立接口的对象(一般情况下不能创界接口的对象) ,但可以这样写:
new Smoking(){ 重写接口的抽相关方法 } ;
// 以上为子类的对象 ,但这样不会有结果,因为没有调用方法,所以,要有方法,需要在分号前调用方法 .接口中抽象的方法()
若抽象类中有多个抽象方法,而上述只能调用一个方法,要想调用多个方法,需要创建父类的变量 = 子类的对象,然后用父类的变量名调用子类的多方法;
不写变量的范围, 如 int i ;
则为默认的,即只能在包内调用,两个类不在同一个包时,A包中继承B包中的类时,需要导入B包,还需要确认B包中的变量权限,是否可以调用,如果为默认权限,就不能调用
静态代码块,无论new 几次,只执行一次,
构造代码块,new一次,执行一次,且优先于构造方法
构造方法,new一次,执行一次,
顺序:静态代码块-> 构造方法代码块-> 构造方法