博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA中的内部类
阅读量:6672 次
发布时间:2019-06-25

本文共 2593 字,大约阅读时间需要 8 分钟。

内部类?

一个类中有类,实现了类的隐藏,实现了多重继承,内部类拥有所有的外部类所拥有的属性和方法的访问修饰符

避免修改接口的时候出现同名方法

内部类分为四种:

成员内部类、局部内部类、静态内部类、匿名内部类

第一种成员内部类

 

package cn.inner.member;/** * @2018年4月6日 * @王 鸿 * @Administrator */public class Animal {    public int age;    private String name;    public void eat() {    }    protected void show() {    }    class Dog {        public void play() {            System.out.println(name);            eat();        }    }}测试类package cn.inner.member;/** * @2018年4月6日 * @王 鸿 * @Administrator */public class Test {    public static void main(String[] args) {        // 创建外部类的实例;        Animal.Dog dog = new Animal().new Dog();        dog.play();    }}

 

成员内部类

1 如果我们想访问内部类,我们必须要有外部类的实例!只能通过外部类来访问
2 成员内部类可以拥有private、protected访问权限

第二种  局部内部类

package cn.inner.local;/** * @2018年4月6日 * @王 鸿 * @Administrator */public class Animal {    public void eat(String food) {        // 局部内部类        class Dog {            public void show() {                System.out.println(food);            }        }        // 创建内部类的实例        new Dog().show();    }}测试类package cn.inner.local;/** * @2018年4月6日 * @王 鸿 * @Administrator */public class Test {    public static void main(String[] args) {        Animal animal = new Animal();        animal.eat("刘洋洋");    }}

局部内部类

1 定义在方法体或者作用域的类

2 仅限方法体的内部使用
3 当我们所在方法的形参需要在内部类中使用时!那么这个参数必须要用final修饰(在jdk1.8中则不用添加(final))

第三种  静态内部类

package cn.inner.statics;/** * @2018年4月6日 * @王 鸿 * @Administrator */public class Animal {    // 非静态属相    public int age;    // 静态属性    public static String name;    // 非静态方法    public void eat() {    }    // 静态方法    public static void run() {        System.out.println("静态内部类");    }    // 静态内部类    static class Dog {        public void show() {            run();        }    }}测试类package cn.inner.statics;/** * @2018年4月6日 * @王 鸿 * @Administrator */public class Text {    public static void main(String[] args) {        Animal.Dog dog1 = new Animal.Dog();        dog1.show();    }}

静态内部类

1 不依赖于外部类
2 在内部类上加上 static
3 不能访问外部非静态的方法和属性

第四种  匿名内部类

package cn.inner.anonymous;/** * @2018年4月6日 * @王 鸿 * @Administrator */public abstract class Animal {    abstract void eat();}测试类package cn.inner.anonymous;/** * @2018年4月6日 * @王 鸿 * @Administrator */public class Test {    public static void main(String[] args) {        Animal animal = new Animal() {            @Override            void eat() {                System.out.println("匿名内部类");            }        };        animal.eat();    }}

匿名内部类

1 没有名称,看不到类的定义
2 要求所有的匿名内部类必须实现一个接口或者继承一个类
3 当我们所在方法的形参需要在内部类中使用时!那么这个参数必须要用final修饰(在jdk1.8中则不用添加(final))

 

转载于:https://www.cnblogs.com/wh1520577322/p/8728646.html

你可能感兴趣的文章
HTC推出革新的HTC旗舰级Android智能手机
查看>>
switch&router-四层模式
查看>>
新博安卓培训的第一天
查看>>
游戏中常用到的碰撞检测帮助类
查看>>
访问默认共享
查看>>
01262015要看的blog——oracle tuning
查看>>
[信息图]电子商务营销的6大步骤
查看>>
Hibernate注释大全收藏
查看>>
通过openfiler模拟存储
查看>>
java学习笔记 --- String类
查看>>
1.5-cut命令
查看>>
我的友情链接
查看>>
从技术角度看人与人的沟通
查看>>
加速sshd
查看>>
15.3、SElinux介绍
查看>>
关于Nagios Core
查看>>
python基本数据类型的介绍
查看>>
原生的js写Ajax请求
查看>>
战略合作背后的秘密:VMware沦为AWS的渠道商?
查看>>
tar.gz安装
查看>>