java内部类 缺点_Java内部类

在这小编带给大家讲解一下内部类的基本知识点,在学习Android开发之前我们要对内部类要有所认识,因为在Android的实际开发中内部类的定义我们非常常见,所有小编在这要特意讲解,认识一下内部类的语法定义规则

学习目标:

掌握内部类定义

掌握内部类的优缺点

掌握内部类的使用格式

掌握static 声明内部类的作用

内部类

定义

在一个类B的内部定义一个类为A,那我们通常叫A类为B类中的内部类,内部类可以声明成public或者private。当内部类声明成public或着private时,对其访问的限制与成员变量和成员方法完全相同,往往定义内部类的作用实现类之间的高内聚,代码不对外开放的,实现一些敏感数据不那么轻易被访问的作用

语法

标识符 class 外部类的名称{

//外部类成员

标识符 class 内部类的名称{

//内部类成员

形式

在内部类的学习中我们最常见的内部类有如下三种形式

成员内部类 、方法内部类、匿名内部类

特点:

成员内部类:在一个外部类的内部且方法外定义的类我们称为外部类 ,该类特点是高度内聚,不对外开放

方法内部类(局部内部类):在一个方法内部定义的类我们通常叫做方法内部类或者局部内部类 该类特点是短暂性的,不对外的

匿名内部类:要满足匿名内部类操作在实现该类操作时必须是一个抽象类或者是一个接口,这样才能使用内部类操作,在实现一个内部类操作时,同时是重写未实现的方法,也是高内聚的特点

2. 掌握内部类的优缺点

在讲解内部类的优缺点时,实现我们编写两个程序简单的对比内部类的优缺点

案例1

package anonymousinner;

public class OutClass {

//定义一个外部类字符串属性

private String info ="内部类";

//定义一个内部类

class Inner{

//编写一个内部类方法

public void printInfo(){

System.out.println(info);

}

}

//定义一个外部类方法

public void print(){

//执行调用内部类方法操作

new Inner().printInfo() ;

}

public static void main(String[] args) {

new OutClass().print() ;

}

}

2.   案例2

packageanonymousinner.test;classOut{//定义一个字符串属性

private String info ="内部类";//将Inner方法内容输出

public voidprint(){new Inner(this).printInfo() ;

}publicString getInfo(){return this.info ;

}

}classInner{privateOut out ;publicInner(Out out){this.out =out ;

}//编写一个内部类方法

public voidprintInfo(){

System.out.println(out.getInfo());

}

}public classOutClassTwo {public static voidmain(String[] args) {//测试输出

newOut().print() ;

}

}

结合以上两个案例代码可以看出使用内部类的代码量往往要比不使用内部类案例代码量要多,而复杂度也增加了,使用内部类最大的优点可以方便访问外部类中的私有属性,而使用内部类最大缺点就是在一个正常类操作中,类中只定义了属性或方法。如果再定义一个内部类的话,则破坏了代码的整体结构

刚才上述案例中也是讲解了内部类的一种形式叫做成员内部类

接下来讲解的是方法内部类

packageanonymousinner;public classFunClass {private String info ="外部类属性值";public static voidmain(String[] args) {//执行测试

newFunClass().print() ;

}public voidprint(){classInner{//定义一个带有参数内部类方法

public voidprintInfo(String str){

System.out.println("这是谁的值:"+str);

System.out.println("这是谁的值:"+info);

}

} ;new Inner().printInfo("内部类参数值") ;

}

}

使用static声明内部类

在使用是static声明一个内部类,声明的内部类就称为外部类了,直接可以在类的外部进行外部调用,如果要访问外部类的属性则必须是static访问权限,否则不可直接调用外部类的属性

packageanonymousinner.test;classA{private static String name ="XiaoMing";static classB{public voidsaid(){

System.out.println(name+"可以说话了");

}

}

}public classStaticInnerClass {public static voidmain(String[] args) {//执行调用

newA.B().said() ;

}

}

一旦内部类用static修饰这该内部类可以被外部进行调用,那调用的形式又是怎么呀的呢?我们可以通过以下格式进行调用

外部类.内部类 内部对象 = 外部类实例.new 内部类()

匿名内部类

在实际开发中如果一个类在这个程序中只是使用一次的话,就可以将该类定义为匿名内部类,匿名内部类是在抽象类以及接口的继承上发展而来,往往在实现多态操作中发挥的重要作用,且在Android的学习中匿名内部类是非常常见的程序编程形式,还有众多的java框架中也运用的比较多,我们主要学习掌握匿名内部类的语法定义和使用

packageanonymousinner;//定义一个接口

interfaceIUSB{public voidstart() ;

}//定义一个类实现该接口

class Conputer implementsIUSB{public voidstart() {

System.out.println("电脑中的USB启动了");

}

}public classTest {public static voidmain(String[] args) {//直接以接口形式实现

new Test().print(newConputer());//通过匿名实现

newTest().print2() ;

}//第一种直接通过调用

public voidprint(IUSB usb){

usb.start() ;

}public voidprint2(){//编写一个匿名内部类

IUSB comput2 = newIUSB(){public voidstart() {

System.out.println("电脑2USB启动");

}

} ;

comput2.start() ;

}

}

在使用匿名内部时,如果电脑这个类只需要使用一次,那我们还要而外声明一个类吗?答案是不用的,所以匿名内部类的好处就体现在这了

以上就是匿名内部类的讲解内容啦!如果对小编写的内容有疑问或者写的不对的地方那恳请各位给小编留言啦,谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值