package com.msb7;
/**
* @Auther:liu
* @Date:-10:33:33
* @Description:IntelliJ IDEA
* @Version:1.0
*/
/*
* 1、类的组成:属性,方法,构造器,代码块(普通晶块、静态块、构造块、同步块),内部类
* 2、一个类TestOuter的内部类的类SubTest叫内部类,内部类:SubTest 外部类 TestOuter
* 3、内部类:成员内部类(静态的,非静态的)和局部内部类 (位置:方法内,块内,构造器内)位置
* 4、成员内部类:
* 里面有属性,方法,构造器等
* 修饰符:private,default,public,final,abstract
* */
public class TestOuter {
//成员内部类:
class D{
String name;
int age=20;
public void method(){
int age =30;
//8、内部类和外部类属性重名的时候如何调用
System.out.println(age);//30
System.out.println(this.age);//20
System.out.println(TestOuter.this.age);
//5、内部类可以访问外部类的内容
System.out.println(age);
}
}
//静态成员内部类
static class e{
public void method(){
//6、静态内部类中只能访问外部类中被static修饰的内容
//System.out.println(age);
//a();
}
}
//属性
int age=10;
//方法
public void a(){
System.out.println("这是a方法");
{
System.out.println("这是个普通块");
class a{
}
//7、外部类访问内部类的东西,需要创建内部类的对象然后进行调用
D d=new D();
//System.out.println(d.name);
d.method();
}
}
{
System.out.println("这是个构造块");
class b{
}
}
static {
System.out.println("这是静态块");
}
//构造器
public TestOuter(){
}
public TestOuter(int age) {
this.age = age;
class c{
}
}
//这是一个main方法:是程序的入口
public static void main(String[] args) {
//创建外部类的对象
TestOuter t=new TestOuter();
t.a();
//创建内部类对象
//静态的成员内部类创建对象
TestOuter.e e=new TestOuter.e();
//非静态的成员内部类创建对象
TestOuter.D D = t.new D();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本