第6章 java内部类
admin
2024-01-25 23:30:04
0

第6章 java内部类

java内部类可以分为:成员内部类、局部内部类。

内部类的特点:
①内部类仍然是一个独立的类,在编译后会生成独立的.class文件;
②内部类是外部类的一个成员,因此可以自由访问外部类的所有成员;

1、实例内部类

e.g.
class A{static String s1 = "这是A类中的静态成员";String s2 = "这是A类中的实例成员";// 实例内部类class B{String s2 = "这是内部类中的实例成员";void f2(){System.out.println("这是实例内部类中的实例方法");// 访问外部类中的静态成员System.out.println(s1);// 访问外部类中的实例成员A a = new A();System.out.println(a.s2);System.out.println(A.this.s2);}}
}
public class Demo1 {public static void main(String[] args) {// 创建外部类的实例A a = new A();// 创建内部类的实例A.B b= a.new B();b.f2();}
}
关于实例内部类的几点说明
①实例内部类可以访问外部类的所有成员;
②在实例内部类中不能定义静态成员,除非同时使用static和final修饰。
③在外部类的静态方法和外部类以外的其他类中,必须通过外部类的实例创建内部类的实例;
④在外部类和外部类以外的其他类中,必须通过内部类的实例访问内部类的成员;

2、静态内部类

class C{static String s1 = "这是外类中的静态成员";String s2 = "这是外部类中的实例成员";// 静态内部类static class D{static String s1 = "这是静态内部类中的静态成员";String s2 = "这是静态内部类中的实例成员";static void f1(){System.out.println("这是静态内部类中的静态方法");System.out.println(C.s1);System.out.println(new C().s2);}void f2(){System.out.println("这是静态内部类中的实例方法");System.out.println(C.s1);System.out.println(new C().s2);}}
}
public class Demo2 {public static void main(String[] args) {// 访问静态内部类中的静态成员System.out.println( C.D.s1);C.D.f1();// 访问静态内部类中的实例成员// 创建内部类的实例C.D d = new C.D();System.out.println(d.s2);d.f2();}
}
关于静态内部类的说明
①静态内部类中可以定义静态成员和实例成员;
②要访问静态内部类的实例成员需要通过静态内部类的实例访问;
③静态内部类可以直接访问外部类的静态成员,如果要访问外部类的实例成员需要通过外部类的实例访问。

4、匿名类

匿名类是指没有名称的内部类,在创建时必须使用new语句声明;
两种实现方式:
①继承一个类,重写其方法;
②实现一个接口,实现其方法;
e.g. 实现方式1
class A1{void show(){System.out.println("这是A类中的方法");}
}public class Test4 {// 匿名类A1 a1 = new A1(){@Overridevoid show() {// super.show();System.out.println("这是匿名类中的方法");}};// 主方法public static void main(String[] args) {new Test4().a1.show();;}
}
e.g. 实现方式2
interface I3{int max(int x,int y);
}public class Test4 {// 使用匿名类实现接口I3I3 i3 = new I3(){@Overridepublic int max(int x, int y) {return x>y?x:y;}};public static void main(String[] args) {int result = new Test4().i3.max(20,50);System.out.println(result);}
}

5、Lambda表达式与函数式接口

使用Lambda表达式实现的接口即函数式接口;

e.g.

interface I4{int max(int x,int y);
}public class Test4 {// 使用Lambda表达式实现接口I4I1 i4 = (int a,int b)->{ return a>b?a:b; };// 主方法public static void main(String[] args) {int y = new Test4().i4.max(30,40);System.out.println(y);}
}
PS:使用Lambda表达式实现接口时,其对应接口中的抽象方法有且只能有一个。

相关内容

热门资讯

原创 特... 中美博弈这盘棋,早就不是隔空喊话的阶段了。 2026年刚开年,美国就直接亮出底牌——不是建议,不是协...
远景助力福德士河启动皮尔巴拉首... 上证报中国证券网讯(记者 王文嫣)1月16日,全球最大铁矿石生产商之一的福德士河透露,近日,该公司在...
山西太原启动2026年消费品以... 公众号转载山西经济日报稿件,须申请授权。 1月16日,由太原市政府、太原市小店区政府主办,太原市商...
挖掘超额收益新路径!ETF申报... 在公募基金的版图中,被动投资的ETF与主动管理的基金界限正变得日益模糊。 ETF的申报与发行,不仅是...
新生代妈妈偏好的孕育平台:专业... 概述 母婴垂类平台在用户定位、业务模式与内容生态方面存在差异。例如,妈妈网侧重于为新手妈妈提供全周期...
金普新区去年新登记经营主体超3... 想创业投资,哪里活力旺、服务优?金普新区最新“成绩单”给出了生动答案——去年全年新增经营主体超过3....
海南封关满月看变化:离岛免税消... 中新网海口1月17日电 (记者 王子谦)海南自贸港全岛封关满月将至。记者17日从cdf海口国际免税城...
13年最低:金银比跌至50!黄... 王爷说财经讯:暴跌预警?金银比创13年最低! 注意了!金融市场又炸雷了! 就在今天,2026年1月1...
不低于30%!商业用房购房贷款... 1月17日,中国人民银行、国家金融监督管理总局发布关于调整商业用房购房贷款最低首付款比例政策的通知,...
商道创投网·会员动态|星融元·... 《商道创投网》2026年1月17日从官方获悉:星融元数据技术有限公司(Asterfusion)近日完...
原创 美... 近日,海关发布了中国2025年的进出口情况。 而关注芯片产业的人发现,2025年,中国出口芯片数量3...
爆款刚诞生,德邦基金为何急下“... 来源:市场资讯 作者 |郑理 来源 | 独角金融 2026年的公募市场,被一只名不见经传的AI应用...
欧陆之星钻石被出具警示函,涉未... 蓝鲸新闻1月17日讯,近日,江苏证监局发布行政监管措施决定书,剑指欧陆之星钻石(上海)有限公司。 决...
木林森涨1.76%,成交额4.... 来源:新浪证券-红岸工作室 1月16日,木林森涨1.76%,成交额4.35亿元,换手率4.20%,总...
金一文化跌3.63%,成交额2... 来源:新浪证券-红岸工作室 1月16日,金一文化跌3.63%,成交额2.04亿元,换手率2.38%,...
险资系私募基金总数量增至11只 险资长期股票投资试点正加速落地。中国证券投资基金业协会信息显示,国丰兴华鸿鹄志远三期私募证券投资基金...
邹加怡出任亚洲基础设施投资银行... 央广网北京1月16日消息(记者 宓迪)据“亚洲基础设施投资银行”微信公众号,今日,邹加怡正式就任亚洲...
汉德精密:向外走、向深拓 抢占... 全球产业分工重构之际,中国装备制造企业出海已从“规模扩张”迈入“提质增效”新阶段,而产业链协同共生成...
中央财政加力支持 民间专项担保... 围绕支持民间投资,日前召开的2026年首场国务院常务会议提出设立“民间投资专项担保计划”,这意味着我...
我们该如何应对“难治性双相情感... “前一秒还情绪高涨、斗志昂扬,下一秒就陷入低谷、悲观绝望”——这不是简单的“心情不好”,而是双相情感...