内部类的重要知识
1.不能直接在主方法里调用内部类的方法或者属性
class Outer{
private int a=1;
class Inner{
public void Info(){
System.out.println(a);
}
}
}
class ListSetMap {
public static void main(String[] args) {
new Outer.Inner().Info(); //这样编译不通过的
}
}
会报错
---------- 编译javac ----------
ListSetMap.java:12: 错误: 需要包含Outer.Inner的封闭实例
new Outer.Inner().Info(); //这样是错误的写法
^
1 个错误
不是静态类,因此不能使用“外部类.内部类”的形式。
所以只能通过调用外部类的来调用内部类的方法
class Outer{
private int a=1;
class Inner{
private int b=0; //定义b
public void Info(){
System.out.println(a);
}
}
public void fun()
new Inner().Info(); //生成Inner对象调用方法
System.out.println(new Inner().b); //继续访问private int b
}
}
class ListSetMap {
public static void main(String[] args) {
new Outer().fun(); //调用外部类的方法调用内部类
}
}
使用static来声明内部类(即可直接调用)-->解决上面的办法
class Outer{
private static int a=1;
static class Inner{
public void Info(){
System.out.println(a);
}
}
}
class ListSetMap {
public static void main(String[] args) {
new Outer.Inner().Info();
}
}
输出 1
在外部访问内部类
对于上面的static方法来访问内部类,那还有下面这种方法来调用内部类的方法或者属性
class Outer{
private int a=1; //封装变量
class Inner{
public void Info(){
System.out.println(a);
}
}
}
class ListSetMap {
public static void main(String[] args) {
Outer out=new Outer(); //实例化外部类对象
Outer.Inner in=out.new Inner(); //实例化内部类对象
in.Info(); //调用内部类的方法
}
}
输出 1
还能在方法中定义内部类
class Outer{
private int a=1;
public void fun(){ //此处若有参数 必须使用final定义
class Inner{
public void Info(){
System.out.println(a);
}
}
new Inner().Info(); //实例化内部对象
}
}
class ListSetMap {
public static void main(String[] args) {
new Outer().fun();
}
}
输出 1
点击查看更多内容
1人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦