精华内容
下载资源
问答
  • Java的内层类和外层

    2021-03-09 17:36:31
    内层类就是在另一个类的内部定义的一个类,定义这个类的类被称作外层类.内层类的优点在于它拥有对在外层类中定义的所有变量和方法的访问权.这也是内层类非常适合于创建适配器的原因;内层类的另一个优点是用户可以看到...

    be91cd4623ad8ba616b96ccecb783fcf.png

    什么是inner class?

    内层类就是在另一个类的内部定义的一个类,定义这个类的类被称作外层类.内层类的优点在于它拥有对在外层类中定义的所有变量和方法的访问权.这也是内层类非常适合于创建适配器的原因;内层类的另一个优点是用户可以看到它们实例化一个接口的实例,如下代码(这是按钮单击事件的代码):

    //outer class is "Frame1"

    button1.addActionListener(new Java.awt.event.ActionListener(){

    public void actionPerformed(ActionEvent e){

    button1_actionPerformed(e); //button1_actionPerformed(e)方法定义在Fr

    ame1中

    }

    });

    其中:

    java.awt.event.ActionListener(){

    public void actionPerformed(ActionEvent e){

    button1_actionPerformed(e);

    }

    }

    这就是定义的一个内层类!事实上ActionListener是一个接口,其后的{}中的内容是这个内层类的的一个方法:public void actionPerformed(ActionEvent e);这个内层类有任何属性.这个方法中的动作就是调用了按钮单击的方法----button1_actionPerformed

    (e)

    ----这个方法在外层类Frame1中定义:我们的处理就在这个方法中,比如我们可以写:

    void button1_actionPerformed(ActionEvent e){

    System.exit(0);

    }

    在这里,我们看到了内层类在调用外层类的方法----button1_actionPerformed(e).同时,我们注意到该内层类定义的前面的"new",她把这个内层类实例化了!

    匿名类和命名类在上面这段代码中,定义的内层类没有类名,这是因为这个类只被使用了一次,是一个"一次性"类,即匿名类.不用担心这个类的名字,Java会在背后帮我们做这些.在编译之后,可以在项目目录下找到这些类,它们具有这样的名字:Frame1$1.class,Frame1$2.class等等,以此类推.

    我们也可以使用这项技术如:

    Button newButton = new Button(){

    public void someNewMethod(){

    /* Defination of extra method here */

    }

    };

    这里,newButton对象是正常的java.awt.Button,其中含有为它定义的一个额外方法.

    当想在一个内层类内创建多个对象时,要使用命名类,而不要使用匿名类.实际上命名类在本质上和匿名类没有什么不同,其代码如下:

    public Frame1 extends DecoratedFrame{

    ...

    public Frame1(){

    ...

    try{

    jbInit();

    }

    catch(Exception e){

    e.printStackTrace();

    }

    } //end of Frame1 constructure

    private void jbInit() throws Exception{

    ...

    button1.addActionListener(new Button1Adapter());

    ...

    } //end of jbInit() method

    class Button1Adapter implements java.awt.event.ActionListener{

    public void actionPerformed(ActionEvent e){

    button1.actionPerformed(e);

    }

    }

    void button1_actionPerformed(ActionEvent e){

    /* Your own statements */

    }

    }

    这里,为名为Button1Adapter的一个类提供了正常的定义.这个类实现ActionListener接口.

    new创建适配器的一个实例,可以将其余button1对象注册到一起.内层类将会拥有这样的文件名:Frame1$Button1Adapter.class.

    上面的代码也可以不用内层类来实现.但标准的方法是应该使用内层类.各位如果感兴趣的话,也可以试试不用内层类来实现上述代码...:-)

    2829f2ca24f0d0090cbba57f30759f23.png

    Java的内层类和外层类.doc

    下载Word文档到电脑,方便收藏和打印[全文共1456字]

    编辑推荐:

    8b95f2eb3d3f7ce4dc3bf1178c74941e.png

    8b95f2eb3d3f7ce4dc3bf1178c74941e.png

    8b95f2eb3d3f7ce4dc3bf1178c74941e.png

    8b95f2eb3d3f7ce4dc3bf1178c74941e.png

    8b95f2eb3d3f7ce4dc3bf1178c74941e.png

    下载Word文档

    展开全文
  • 转自:python进阶5:外层函数、内层函数和闭包 在函数内部定义的函数和外部定义的函数是一样的,只是他们无法被外部访问,例如:def f(): print f() def g(): print g() retuhttps://......
    展开全文
  • 什么是系统的三架构? 三架构(3-tier architecture) 通常是指将整个业务应用划分为:表现(UI)、业务逻辑(BLL)、数据访问(DAL)。目的是“高聚,低耦合”的思想。一、概念:三架构(3-tier architecture)...

    什么是系统的三层架构? 三层架构(3-tier architecture) 通常是指将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。目的是“高内聚,低耦合”的思想。

    一、概念:

    三层架构(3-tier architecture) 通常是指将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。目的是“高内聚,低耦合”的思想。

    1、表现层(UI):是展现给用户的界面。

    2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。

    3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。

    42314432_1.jpg

    二、原理:

    3个层次中,系统主要功能和业务逻辑都在业务逻辑层进行处理。

    解析:三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交互。

    三层是指逻辑上的三层,而不是物理上的三层!

    解析:所谓三层体系结构,是在客户端与数据库之间加入了一个“中间层”,也叫组件层。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。

    三、各层的作用

    1、表现层:

    位于最外层(最上层),离用户最近。用于显示数据和接收用户输入的数据,以及数据的返回,为用户提供一种交互式操作的界面。

    2、业务逻辑层(BusinessLogic Layer)

    是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理。主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的领域(Domain)逻辑有关。很多时候,也将业务逻辑层称为领域层。

    业务逻辑层在体系架构中的位置很关键,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。由于层是一种弱耦合结构,层与层之间的依赖是向下的,底层对于上层而言是“无知”的,改变上层的设计对于其调用的底层而言没有任何影响。

    3、数据层

    数据访问层:有时候也称为是持久层,主要功能是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务。简单的说法就是实现对数据表的Select,Insert,Update,Delete的操作。

    42314432_2.jpg

    四、优缺点

    1、优点

    1) 开发人员可以只关注整个结构中的其中某一层;

    2) 可以很容易的用新的实现来替换原有层次的实现;

    3) 可以降低层与层之间的依赖;

    4) 有利于标准化;

    5) 利于各层逻辑的复用。

    6) 结构更加的明确

    7) 在后期维护的时候,极大地降低了维护成本和维护时间。

    2、缺点

    1) 降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。

    2) 有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

    展开全文
  • 装饰器:调用hanshu2(原始功能)的时候会去调用hanshu1(扩展功能) @hanshu1(标识) def hanshu1(func): print('这里是函数1') def zhongjian(): print('这里是中间函数') func() # print('call%s'%hanshu2.__...

    装饰器:调用hanshu2(原始功能)的时候会去调用hanshu1(扩展功能)
    @hanshu1(标识)

    def hanshu1(func):
        print('这里是函数1')
        def zhongjian():
            print('这里是中间函数')
            func()
            # print('call%s'%hanshu2.__name__)
        return zhongjian
    @hanshu1
    def hanshu2():
        print('这里是函数2')
    hanshu2()
    
    D:\anaconda\python.exe E:/pythonProject/类.py
    这里是函数1
    这里是中间函数
    这里是函数2
    
    Process finished with exit code 0
    

    关于装饰器的疑惑

    1.为啥装饰器的函数返回的是内层函数的函数名,不是函数名+();按理说一般的函数返回函数名返回的这个函数根本不会执行
    首先是一般函数而言,外层函数如果只是返回函数名的话,根本不会调用到内层函数,只有外层函数return 函数名()的时候内层函数才会执行
    一般函数:

    def han3():
        print('这是han3')
        def han4():
            print('这是han4')
        return han4
    han3()
    

    运行结果:
    在这里插入图片描述

    def han3():
        print('这是han3')
        def han4():
            print('这是han4')
        return han4()
    han3()
    

    运行结果:
    在这里插入图片描述
    所以到装饰器的时候我就疑惑了,装饰器的外层函数返回的是函数名,但是显然的内层函数也执行了,我就试了下面两种方式:
    1.1 在调用原始函数han2的时候(不加()的时候),这个时候函数运行只运行了外层函数并返回了<function han1..han at 0x000001DE5719B558>,意思是返回了一个内层函数,但是没有运行;
    1.2 在调用han2的时候加上()呢,这个时候就执行了内层函数han()
    原因:在调用han2()的时候,实际上执行的是装饰器han1(),han2这个方法作为一个参数传递给han1,han1执行之后返回han,han+()(这个()是调用han2的())这个时候就执行han()了
    装饰器:

    def han1(func):
        print('这是han1')
        def han():
            print('这是han')
            return func()
        return han
    @han1
    def han2():
        return '这是han2'
    print(han2)
    

    运行 结果:
    在这里插入图片描述
    在调用han2的适合加上()之后

    def han1(func):
        print('这是han1')
        def han():
            print('这是han')
            return func()
        return han
    @han1
    def han2():
        return '这是han2'
    print(han2())
    

    运行结果:
    在这里插入图片描述

    2.为啥内层函数在调用了原始函数要return一下
    return返回的结果要显示出来,只能用print函数打印出来
    执行装饰器的时候,执行到han2的时候(也就是原始函数的时候),不为了不使原始函数的功能受到影响(return的值),需要再return一下,最后通过print打印出来

    def han1(func):
        print('这是han1')
        def han():
            print('这是han')
            return func()
        return han
    @han1
    def han2():
        print('不return')
        return '这是han2'
    print(han2())
    
    

    在这里插入图片描述

    def han1(func):
        print('这是han1')
        def han():
            print('这是han')
            func()
        return han
    @han1
    def han2():
        print('不return')
        return '这是han2'
    print(han2())
    

    在这里插入图片描述

    展开全文
  • 【判断题】在嵌套循环中,内层循环和外层循环不能交叉。( ) 【单选题】若定义有变量 float f1,f2 = 8.0F, 则下列说法正确的是 ________ 。 【单选题】下列程序的输出结果是_________ 。 【单选题】有 Java 语句“int...
  • 变量提升导致for循环计数变量泄露变成全局变量。 var s = []; for (var i = 0; i < 3; i++) { s[i] = i;...此处i作为计数变量应该...变量提升导致的内层变量覆盖外层变量 var tmp = new Date(); function f() {
  • Java的内层类和外层类(转)[@more@]什么是inner class?内层类就是在另一个类的内部定义的一个类,定义这个类的类被称作外层类.内层类最大的优点在于它拥有对在外层类中定义的所有变量和方法的访问权.这也是内层类非常...
  • 如下代码: public class A{ @Transactional(rollbackFor = Exception.class) public void test1(){ test2(); } public void test2(){ //具体代码实现 ...需求:若test2中的方法出现异常,不影响主流程test1...
  • public static void main(String[] args) { for (int i=0; i<3;i++){ System.out.println("外层循环"+i); for (int j=0; j<3; j++){ if (i==j){ System.out.println("内层循环"+j); ..
  • 怎么解决Python内层for循环break出外层循环的问题发布时间:2021-02-04 11:40:44来源:亿速云阅读:81作者:小新小编给大家分享一下怎么解决Python内层for循环break出外层循环的问题,希望大家阅读完这篇文章之后都...
  • //外层循环 for(int m=0;m<list01.size();m++){ ...//内层循环 for(int n=0;n<list02.size();n++){ if(条件跳出内循环,外循序执行下一个){ flag=true; break; } } if(flag){ continue.
  • 上周维护一个模块时,发现代码逻辑有个 bug,在内层循环改变了外层循环变量导致的,简化一下如下代码。 for(int i = 0; i < k1; i++) { // do something... for(i = 0; i < k2; i++) { //do other thing ...
  • 嵌套查询(子查询)1、定义 :把内层的查询结果作为外层的查询条件2、语法格式select ... from 表名 where 条件(select ....);3、示例1、把攻击值小于平均攻击值的英雄名字和攻击值显示出来1、先计算平均值select avg...
  • vue外层div上有点击事件,内层div也有点击事件,想要实现点内层div,不触发外层点击事件 vue有个属性是@click.stop
  • 这样的结构很像我们电脑里的文件夹,「我的电脑」是最外面的一,里面套着CDEF盘,每个盘里又有很多文件夹,文件夹里又有文件夹,最后才是很多具体的文件。 为什么要按照这种结构来组织呢?其实就是方便解析和查询。...
  • i 1 j 是什么意思 i.j.k是什么意思

    千次阅读 2021-03-21 10:53:13
    i 1 j 是什么意思 i.j.k是什么意思以下文字...c语言 i/=++j 是什么意思。 是i=j+1么相当于两句j=j+1;i=i/j;也就是 j先加然后i除以j自加后的值,得的结果赋值for(i=1;i<10;i++){for(j=1;j<=i;j++)解释一下这是什...
  • /p>1.0 Transitional//EN" ...css外层DIV半透明内层div不透明-弹出层效果的实现【实例】function closeDiv(divId){document.getElementByIdx_x_xx(divId).style.display = '...
  • 前言:实现外层div中嵌入内层div内容,如果有滚动条则不记录停留位置,每次进入弹层都会在初始位置。点击按钮显示或者隐藏弹层。 代码: <p class="txt f99 f12 mt4"> <a href="javascript:void(0);" ...
  • 过完五一,天气要慢慢热起来了,汽车空调使用的季节又要来了,但是很多车主对汽车空调的内外循环使用还是有点傻傻分不清,今天汽车维修网小编就和大家简单的说一下循环和外循环的循环和外循环标志循环和外循环...
  • 展开全部没看懂具体啥意思!e5a48de588b63231313335323631343130323136353331333339663266...publicstaticvoidmain(String[]args){Stringinner="%1$s";Stringouter="外%1$s";for(inti=0;iswitch(i){case0:System.o...
  • 案例中的路由映射代码 const routes = [ { path: '/', redirect: '/home' }, { path: '/home', component: () => import('./../components/Home'), meta: { title: 'home' ... compone
  • c语言中goto是什么意思

    千次阅读 2021-05-18 15:06:32
    满意答案jaylou19852018.02.09采纳率:45%等级:8已帮助:315人goto用在内层循环中比较合适,用break只能跳出内层循环,而goto可以直接跳出最外层循环,在合理的地方使用就可以了。不要频繁的使用goto,过多的使用...
  • 系统的三体系结构是什么?三体系结构通常是指将整个业务应用程序划分为: 表示(UI),业务逻辑(BLL)和数据访问(DAL). 目的是``高聚,低耦合''的思想.一个. 概念:3体系结构通常是指将整个业务应用程序...
  • 什么是Pandas的DataFrame?

    千次阅读 2020-12-24 22:00:13
    什么是DataFrameDataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被看做由series组成的字典(共用同一个索引)2. ...
  • 2017-01-04 回答首先:嵌套是这么理解的比如你有10棵树,每天都去检查是否生虫子了,连续检查一个月...}}外层循环用户控制天,内层循环用于控制树,缺一不可第一天检查十遍,第二天检查十遍,...也就是j=1的时候内层循环执...
  • 什么是 VXLANVXLAN(Virtual Extensible LAN)虚拟可扩展局域网,是一种 overlay 网络技术,将原始2以太网帧进行UDP封装 (MAC-in-UDP),增加8字节 VXLAN头部,8字节 UDP头部, 20字节 IP 头部和14字节以太网头部,...
  • 太阳粒子流是什么

    2020-12-23 21:23:00
    匿名用户1级2011-06-21 回答因能量的增加而使得自身活动加强,从而向广袤的空间释放出大量带电粒子所形成的...太阳风暴爆发时,将影响通讯、威胁卫星、破坏臭氧,对人体的健康也会造成一定影响。1850年,一位名叫...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 237,394
精华内容 94,957
关键字:

外层是什么内层是什么