14.内部类

内部类

1.1 内部类概述

内部类:就是在一个类中定义一个类。
     举例:在一个类A的内部定义一个类B,类B就被称为内部类

内部类定义格式
●格式:

public class 类名 {
	修饰符 class 类名 {
	}
}

●范例:

public class Outer {
	public class Inner {
	}
}

内部类的访问特点
    ●内部类可以直接访问外部类的成员,包括私有
    ●外部类要访问内部类的成员,必须创建对象

1.2 成员内部类

按照内部类在类中定义的位置不同,可分为如下两种形式
    ●在类的成员位置:成员内部类
    ●在类的局部位置:局部内部类

成员内部类,外界如何创建对象使用呢?
    ●格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象;
    ●示例:Outer.Inner oi = new Outer().new Inner();

1.3 局部内部类

局部内部类是在方法中定义的类,所以外界是无法直接使用,需要在方法内部创建对象并使用
该类可以直接访问外部类的成员,也可以访问方法内的局部变量

1.4 匿名内部类

前提:存在一个类或者接口,这里的类可以是具体类也可以是抽象类

●格式:

new 类名或者接口名() {
	重写方法;
};

●范例:

new Inter() {
	public void show() {
	}
}

本质:是一个继承了该类或者实现了该接口的子类匿名对象

此处我疑惑较多,放出练习代码辅助理解。(myInnerClass模块second.day3_07包)

public class Outer {

    public void method(){

/*        new Inter() {
            @Override
            public void show() {
                System.out.println("匿名内部类");
            }
        };*/
        //既然上面这一坨是一个对象,那么使用对象的调用方法,即可调用里面的show方法

/*        new Inter() {
            @Override
            public void show() {
                System.out.println("匿名内部类");
            }
        }.show();           //实现了对象的调用
        */
        //上面虽然确实实现了方法的调用,但每次调用都要写这么大一坨显然不合适

        Inter i = new Inter() {
            @Override
            public void show() {
                System.out.println("匿名内部类");
            }
        };
        i.show();
        //这样才是最优解了
    }

}
public interface Inter {
    void show();
}

最后再强调一遍:匿名内部类本质是一个继承了该类或者实现了该接口的子类匿名对象

1.5 匿名内部类在开发中的使用

public class Demo {
    public static void main(String[] args) {

        Jumpping j = new Cat();   //需要新建一个Cat类

        JumppingOperator jo = new JumppingOperator();
        jo.method(j);

        Jumpping j2 = new Dog();   //需要新建一个Dog类

        jo.method(j2);
        System.out.println("--------------------");
        //要一个动物跳高就要建一个类,过于麻烦;
        //而method方法要的形参其实就是Jumpping接口的实现类对象
        //所以我们尝试用刚学习的匿名内部类来实现

        //这种直接把内部类作为形参使用
        jo.method(new Jumpping() {
            @Override
            public void jump() {
                System.out.println("猫可以跳高了");
            }
        });

        //这种先把内部类作为一个Jummping接口的实现类对象存着,然后再用jo.method()调用
        Jumpping j3 = new Jumpping() {
            @Override
            public void jump() {
                System.out.println("狗可以跳高了");
            }
        };
        jo.method(j3);

    }
}
### 回答1: cskin是一款针对Android系统进行界面主题定制的开源项目,其源码版本为16.1.14。cskin主要目的是帮助开发者在不改变原始代码的情况下,实现界面样式的个性化定制。 cskin的源码包括了各个界面元素的渲染代码、资源文件替换代码以及主题管理代码等。在16.1.14版本中,源码经过一系列的优化和改进,提供了更加稳定和高效的功能。 首先,cskin的渲染代码使用了一套高效的绘制引擎,能够快速准确地绘制自定义的界面元素。这使得开发者可以根据自己的需求设计和绘制各种按钮、控件和背景等,实现自定义的界面外观。 其次,cskin提供了资源文件替换功能,使得开发者可以根据需要动态更换应用程序中的资源文件。这包括了图片、文字、颜色等各种资源,可以根据用户的主题选择或者系统设置,动态切换应用的外观。 最后,cskin还实现了主题管理功能,开发者可以根据不同的主题创建不同的样式,实现不同场景下的个性化界面。这样,用户可以根据自己的喜好选择不同的主题,提升应用的用户体验。 总的来说,cskin 16.1.14源码为开发者提供了一套完善的界面主题定制解决方案,使得开发者可以快速、灵活地实现界面的个性化定制。通过cskin,开发者可以为Android应用程序提供更加精美、独特的外观,提升用户体验。 ### 回答2: cskin 16.1.14源码是一段关于皮肤定制的代码。cskin是一个开源的皮肤定制框架,其中16.1.14是该框架的版本号。 这段源码实现了皮肤定制功能。它使用了一种特定的语法来描述界面元素的外观样式,并根据用户选择的皮肤进行动态加载和切换界面的外观。 源码主要分为三个部分。第一个部分是皮肤描述文件,它是一个以特定格式编写的文本文件,描述了界面元素的外观样式,如颜色、字体、背景等。第二个部分是皮肤加载器,负责根据用户选择的皮肤加载对应的皮肤描述文件,并将样式应用到界面元素上。第三个部分是界面元素的样式应用,它将加载的皮肤描述文件中定义的样式应用到对应的界面元素上,以实现界面的定制。 在源码中,我们可以看到一些关键的函数和类。如,loadSkin函数用于加载皮肤描述文件,它通过解析文件内容获取各个界面元素的样式,并将其存储在内存中。applyStyles函数用于将加载的样式应用到界面元素上,它会遍历界面元素树,根据其标识和已加载的样式进行匹配,并将相应的样式应用到界面元素上。 使用cskin 16.1.14源码,我们可以方便地定制界面的外观样式。它可以帮助开发者快速实现皮肤定制功能,使用户可以根据个人喜好选择不同的皮肤风格。同时,开发者也可以根据需求灵活定制皮肤描述文件,以满足不同用户的需求。 总之,cskin 16.1.14源码是一个实现皮肤定制功能的开源框架,通过加载和应用皮肤描述文件,可以实现界面的外观定制。它可以帮助开发者快速定制和切换皮肤,提升用户体验。 ### 回答3: cSkin 16.1.14是一个开源的软件库,用于构建图形用户界面(GUI)。它提供了一系列的功能和工具,帮助开发人员创建和定制各种窗口、控件和美化界面。 cSkin 16.1.14的源码是以C++语言编写的,它包含了各种用于绘制、渲染和处理界面元素的函数和类。源码中的每一行代码都经过精心设计和编写,以实现高性能和良好的可维护性。 通过阅读cSkin 16.1.14的源码,开发人员可以深入了解该库的工作原理和内部机制。他们可以学习如何使用cSkin的API来创建和管理界面元素,以及如何应用不同的主题和样式。此外,源码中还包含了一些示和演示程序,帮助开发人员更好地理解和应用cSkin。 cSkin 16.1.14的源码的开放性意味着任何人都可以自由使用、修改和分发它。这使得开发人员可以根据自己的需求和喜好进行定制和扩展。他们可以添加新的功能或修复现有的 bug,以满足特定项目的要求。 总之,cSkin 16.1.14的源码是一个宝贵的资源,对于希望开发具有吸引力和个性化界面的软件的人来说是一个很好的学习和参考材料。它提供了丰富的功能和灵活性,可以帮助开发人员快速构建出令人印象深刻的GUI应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值