内部类的重要知识
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
點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊
評(píng)論
評(píng)論
共同學(xué)習(xí),寫下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦