黑马程序员---面向对象中的内部类
2015-07-21 11:24
465 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
在学习JAVA语言的面向对象时,我们接触到了内部类,这是一个我们整个基础学习中经常会遇到的知识点。所以我对内部类做了一个详细的阐述:
内部类定义:
其实就是将一个类定义到了另一个类的内部中。具体点说就是:比如A类想要访问B类中的成员时,就可以将A类定义到B类中,作为B类的内存存在,这样A类就可以对B类中的成员进行直接访问。
首先通过一段简单代码简单展示一下内部类:
![](https://img-blog.csdn.net/20150721150544528?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
内部类按照修饰符修饰可以分为:静态内部类,非静态内部类以及抽象内部类三类。这里主要讲一下静态内部类和非静态内部类。
1.静态内部类:顾名思义被静态修饰符static修饰的内部类叫做静态内部类。
静态内部类注意事项:①只能访问外部类中的静态成员;
②静态内部类中可以定义静态和非静态方法。
结合代码来看一下:
![](https://img-blog.csdn.net/20150721150725386?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2.非静态内部类:
对于非静态内部类在使用时要注意以下三点:
①不能定义静态方法;
②只能定义静态常量(例如:static finally int NUM = 7;)
③可以直接访问外部类成员。
用代码来对理论进行试图化描述:
![](https://img-blog.csdn.net/20150721150716464?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
讲解完静态内部类和非静态内部类后,我们只是定义出来了,那怎么去调用这两个内部类呢?首先看一下静态内部类的调用方式:
![](https://img-blog.csdn.net/20150721150747551?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
非静态内部类调用方式:
![](https://img-blog.csdn.net/20150721150747551?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
当然内部类还可以按照位置的不同分为:局部内部类和匿名内部类两种。
1.局部内部类:定义在外部类的方法中的内部类。
注意事项:① 局部内部类不允许直接访问局部变量。如果需要访问,必须在局部变量前加final;
② 要在外部类的方法中创建局部内部类对象。
这就是局部内的定义方式:
![](https://img-blog.csdn.net/20150721150807116?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2.匿名内部类:简化书写的内部类。
匿名内部类并不是任何情况下都能使用,是有前提的:匿名内部类需要继承或是实现外部的类或者是接口。否则,不能使用匿名内部类。其实匿名内部类就是个子对象。
匿名内部类的格式:new父类名(){子类的内容}或者new接口名(){子类的内容}
在使用匿名内部类时,要注意一点:父类或是接口中的方法不得超过两个,否则不要使用内部类。
通过代码展示出匿名内部类具体写法和使用方法:
![](https://img-blog.csdn.net/20150721150824031?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
在学习JAVA语言的面向对象时,我们接触到了内部类,这是一个我们整个基础学习中经常会遇到的知识点。所以我对内部类做了一个详细的阐述:
内部类定义:
其实就是将一个类定义到了另一个类的内部中。具体点说就是:比如A类想要访问B类中的成员时,就可以将A类定义到B类中,作为B类的内存存在,这样A类就可以对B类中的成员进行直接访问。
首先通过一段简单代码简单展示一下内部类:
内部类按照修饰符修饰可以分为:静态内部类,非静态内部类以及抽象内部类三类。这里主要讲一下静态内部类和非静态内部类。
1.静态内部类:顾名思义被静态修饰符static修饰的内部类叫做静态内部类。
静态内部类注意事项:①只能访问外部类中的静态成员;
②静态内部类中可以定义静态和非静态方法。
结合代码来看一下:
2.非静态内部类:
对于非静态内部类在使用时要注意以下三点:
①不能定义静态方法;
②只能定义静态常量(例如:static finally int NUM = 7;)
③可以直接访问外部类成员。
用代码来对理论进行试图化描述:
讲解完静态内部类和非静态内部类后,我们只是定义出来了,那怎么去调用这两个内部类呢?首先看一下静态内部类的调用方式:
非静态内部类调用方式:
当然内部类还可以按照位置的不同分为:局部内部类和匿名内部类两种。
1.局部内部类:定义在外部类的方法中的内部类。
注意事项:① 局部内部类不允许直接访问局部变量。如果需要访问,必须在局部变量前加final;
② 要在外部类的方法中创建局部内部类对象。
这就是局部内的定义方式:
2.匿名内部类:简化书写的内部类。
匿名内部类并不是任何情况下都能使用,是有前提的:匿名内部类需要继承或是实现外部的类或者是接口。否则,不能使用匿名内部类。其实匿名内部类就是个子对象。
匿名内部类的格式:new父类名(){子类的内容}或者new接口名(){子类的内容}
在使用匿名内部类时,要注意一点:父类或是接口中的方法不得超过两个,否则不要使用内部类。
通过代码展示出匿名内部类具体写法和使用方法:
相关文章推荐
- 黑马程序员—JAVA基础—String类 javaAPI学习
- 面试时可以向面试官提那些问题
- 推荐!国外程序员整理的 PHP 资源大全
- 剑指offer-面试题4.替换空格
- 告别迷茫与忧伤的程序员
- 面试-阻塞队列及线程池
- 面试-锁相关
- 面试-并发概述
- 面试-JVM
- 黑马程序员—— 6,多态
- 面试-MySQL
- 索引面试题荟萃
- 黑马程序员——java基础——多态
- 黑马程序员----JAVA基础----IO流_1
- 黑马程序员——java基础——接口
- Java面试-Hibernate总结
- 黑马程序员——Java交通灯管理系统&银行业务系统
- Web程序员开发5个诀窍
- 程序员开发编程经验知识总结
- 几道坑人的PHP面试题 试试看看你会不会也中招