Android开发基础----Java基础(9)

学习内容

  • 内部类
  • 匿名内部类与匿名对象
1.内部类
  • 尽量在一个文件里面定义一个类
  • 如果需要在类的内部定义一个类,那这各类救市内部类
  • 我们如果要用内部类,原因:希望封装对应的功能,这些功能是为我们不希望直接暴露给外部的
  • 内部类是外部类的一个成员
  • 内部类可以直接访问外部类的数据
  • 外部类无法调用内部类的数据
  • Car bz = new Car();
  • Car.Engine engine = bz.new Engine();
  • 内部类有相应的修饰符:public、protected、final,外部类只能使用public来修饰
  • 内部类分类:普通内部类——属于对象,必须使用对象来调用;静态内部类——属于类,必须用类来调用,而且静态内部类不能调用非静态数据
public class Car {
    private int wheels;
    public void start(){
        wheels = 4;
        //内部使用内部类
        new Engine();
    }
    protected static class Engine{
        public int a;
        public Engine(){

        }
    }
}
2.匿名内部类与匿名对象
class Woker{
    private String name;

    public Woker(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}


class MIniWoker extends Woker{

    public MIniWoker(String name) {
        super(name);
    }
}
public class MyClass {
    public static void main(String[] args) {
        //显示创建,显示对象
        //如果需要多次使用这个对象用此方法
        Woker xw = new Woker("小王");
        buildHouse(xw);
        xw.setName("小王plus");


        //匿名对象
        //这个对象只需要使用一次
        buildHouse(new Woker("张三"));

        //匿名类:不显示创建这个类
        buildHouse(new Woker("miniWoker"){
           //匿名类的具体实现,匿名内部类不能申明构造方法,
           //使用匿名内部类必须满足两点:
           //1.这个类要么继承某个父类;
           //2.要么实现某个接口
            public int salary;
            public void showMoney(){
                System.out.println(getName()+"的工钱为100"+salary);
            }
        });
    }
    public static void buildHouse(Woker a){
        System.out.println(a.getName()+"开始工作");
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,813评论 0 11
  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,710评论 4 12
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,220评论 0 4
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 1,428评论 0 2
  • 小孩小孩你别馋, 过了腊八就是年。 其实早几日就想起小时候进了腊月以后的情形了,尤其到年前一段大人忙碌小孩开心的状...
    i梓蒙阅读 373评论 0 3

友情链接更多精彩内容