public class Outer {//只有内部类才能用static修饰
private int id=10;
public String out(){
System.out.println("这是外部类的方法");
return null;
}
//成员内部类:级别和外部类属性相同,不能定义静态属性
//成员内部类加上static就变为静态内部类:级别和外部类相同
public class Inner{
public void in(){
System.out.println("这是内部类的方法");
}
//获得外部类的私有属性
public void getId(){
Outer outer = new Outer();访问外部类属性时,需先创建外部类对象
System.out.println(outer.id);//外部类属性与内部类属性名相同时,优先访问内部类属性;如果想访问外部类属性,需在前面加上Outer.this
}
//获得外部类的私有方法
public void getOut() {
System.out.println(out());
}
}
//局部内部类:不能加任何访问修饰符
public void method(){
class Inner{
public void inn(){
System.out.println(Outer.this.id);
}
}
Inner inner = new Inner();
inner.inn();
}
}
//一个java类中可以有多个class类,但只能有一个public class
class A{
public static void main(String[] args) {
}
}
public class Text{
public static void main(String[] args) {
//匿名内部类:必须继承一个父类或者实现一个接口
//没有名字初始化类,不用将实例保存到变量中
new Apple().eat();
new UsersService(){
@Override
public void go() {
}
};
}
}
class Apple{
public void eat(){
System.out.println("eat");
}
}
interface UsersService{
void go();
}
public class Application {
public static void main(String[] args) {
Outer outer = new Outer();
//通过外部类来实例化内部类
Outer.Inner inner = outer.new Inner();
inner.in();//这是内部类的方法
inner.getId();//10
inner.getOut();//这是外部类的方法 null
outer.method();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构