第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表达式实现接口时,其对应接口中的抽象方法有且只能有一个。

相关内容

热门资讯

台青看好粤港澳大湾区发展 刘玥晴 郑欣怡 “同心筑梦·青聚香江”海峡两岸暨港澳青年融合发展主题交流活动近日在香港举办。与会台湾...
小腿溃疡最佳治疗方案指南 小腿溃疡是临床常见的迁延难愈性创面,首先需要明确病因分型才能针对性治疗,不要盲目自行涂药或使用偏方,...
603986,存储芯片大牛股,... 【导读】下周A股将有49家公司有限售股份解禁 中国基金报记者 夏天 Wind数据显示,下周(6月22...
山东万福河被指遭污染近10公里... 一名环保博主6月21日上午发布现场调查视频称,山东济宁市金乡县万福河遭严重污染,其中部分河段河水黑如...
国产电子陶瓷商闯关港股!潮州三... 图源:图虫创意 来源|时代商业研究院 作者|实习生陈嘉婕、郑琳 编辑|郑琳 2026年6月8日,潮州...
*ST集友:控股股东、实际控制... *ST集友:控股股东、实际控制人拟协议转让部分公司股份 每经AI快讯,*ST集友(SH603429,...
端午假期最后一天 铁路运输迎来... 今天是端午假期最后一天,铁路运输迎来返程客流高峰。记者从国铁集团了解到,全国铁路预计发送旅客1794...
原创 美... 越来越多美国人不再相信美国经济为他们服务。 收入下滑、贫富分化是全球问题,但在美国,这两个问题又...
腰椎不适辨证针灸调理,从根源缓... 不少人长期久坐、弯腰劳作、受凉后都会出现腰椎酸胀、僵硬,严重时弯腰受限、牵扯腿疼麻木,现代多诊断腰肌...
莱伯泰科:公司发展战略立足于内... 证券日报网6月18日讯 ,莱伯泰科在接受调研者提问时表示,公司的发展战略立足于内生增长与外延扩张的双...
全球首个酒庄影响力指数发布,酒... 财闻 谢振宇 发自泸州 拉菲、玛歌、马爹利、麦卡伦——这些响当当的名字,背后都离不开一个共同的角色:...
首席专家[刘家顺]太原晋都医科... 太原晋都医科静脉曲张定点医院首席专家刘家顺:很多人发现自己久坐、久站后小腿酸胀沉重,腿上慢慢冒出红血...
安集科技官宣H股上市计划 安集科技于2026年6月16日公告,公司正在筹划发行境外上市股份(H股)并在香港联交所挂牌上市,旨在...
马斯克拿下7800亿天价薪酬 根据美国证券交易委员会(SEC)的一份新文件,马斯克已行使了其2018年特斯拉CEO薪酬方案的全部权...
碧芭宝贝:所有已检测纸尿裤产品... 6月21日,碧芭宝贝再就婴儿纸尿裤事件发布公告。公司称,目前品牌全核心主力系列成品第三方检测报告已全...
市场监管总局督导货拉拉整改,向... 来源:市场资讯 (来源:蓝鲸新闻) 据央视新闻,前期,市场监管总局依据《中华人民共和国反垄断法》公开...
翁虹晒女儿高中毕业礼vlog ... 搜狐娱乐讯 近日,翁虹在社交平台上晒出女儿水晶的高中毕业礼vlog,透露女儿以全年级前3、全A的成绩...
肌酸激酶(CK)检测:工作原理... 在细胞分析与临床诊断领域,肌酸激酶(CK)检测犹如精准的探测器,能够深入细胞内部,揭示肌肉组织损伤、...
超声引导下扳机指微创松解,告别... 很多人手指屈伸时出现明显弹响、卡顿,如同扣动扳机,伴随指根疼痛、晨起僵硬,严重时手指会卡住无法伸直或...