文档章节

Java初学(七)

h
 hujiapeng
发布于 2016/12/28 09:40
字数 690
阅读 2
收藏 0

一、内部类

  1、内部类概述:把类定义在其他类内部,这个类被称为内部类(内部类可以使用static修饰,外部类不可)

  2、内部类访问特点:内部类可以直接访问外部类成员,包括私有的

               外部类要访问内部类的成员,必须创建对象

  3、内部类位置:

      成员位置:在成员位置定义的类,被称为成员内部类

      局部位置:在局部位置定义的类,被称为局部内部类

  4、成员位置内部类案例

    内部类和外部类没有继承关系

    通过外部类限定this对象

  5、局部位置内部类

    可以直接访问外部类成员

    在局部位置可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能

    局部内部类访问局部变量必须用final修饰,原因:局部变量是随着方法的调用而调用,随着方法使用完毕而消失,而堆内存的内容不会立即消失(要等垃圾回收器空闲时才回收垃圾变量)。局部变量加final修饰后变为常量,经反编译可看到,局部内部类访问的变量直接是常量而非变量

 

  6、匿名内部类(内部类的简化写法)

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

    格式: new  类名或者接口名(){

          重写方法;

        }

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

    案例:

 1 interface Inter {
 2     public abstract void show();
 3     public abstract void show2();
 4 }
 5 class Outer {
 6     public void method() {
 7             Inter i = new Inter() { //多态
 8             public void show() {
 9                 System.out.println("show");
10             }
11             
12             public void show2() {
13                 System.out.println("show2");
14             }
15         };
16         
17         i.show();
18         i.show2();
19     }
20 }
21 class InnerClassDemo6 {
22     public static void main(String[] args) {
23         Outer o = new Outer();
24         o.method();
25     }
26 }

7、

匿名内部类面试题:
按照要求,补齐代码
interface Inter { void show(); }
class Outer { //补齐代码 }
class OuterDemo {
public static void main(String[] args) {
Outer.method().show();
}
}
要求在控制台输出”HelloWorld”

 1 interface Inter { 
 2     void show(); //public abstract void show();
 3 }
 4 class Outer { 
 5     //补齐代码
 6     public static Inter method() {
 7         //子类对象 -- 子类匿名对象
 8         return new Inter() {
 9             public void show() {
10                 System.out.println("HelloWorld");
11             }
12         };
13     }
14 }
15 class OuterDemo {
16     public static void main(String[] args) {
17         Outer.method().show();
18         /*
19             1:Outer.method()可以看出method()应该是Outer中的一个静态方法。
20             2:Outer.method().show()可以看出method()方法的返回值是一个对象。
21                 又由于接口Inter中有一个show()方法,所以我认为method()方法的返回值类型是一个接口。
22         */
23     }
24 }
匿名内部类面试题

 

© 著作权归作者所有

h
粉丝 0
博文 100
码字总数 60569
作品 0
海淀
私信 提问
Java数据结构知多少?java入门学习

  初学java时,我们会了解到Java工具包提供了强大的数据结构,那么Java的数据结构都有哪几种呢?   一、枚举(Enumeration)接口虽然它本身不属于数据结构,但它在其他数据结构的范畴里应用很...

老男孩Linux培训
2018/07/09
0
0
用java写个程序将网页保存在本地成为 .html

本人JAVA小白~初学JAVA~想用java写个程序将网页保存在本地成为 .html 以下是我借鉴的程序,但是不知道如何将网页信息保存在本地成为.html~~~~~~ 请高手帮帮忙看看改改~~谢谢谢谢~~~...

海星在思考
2012/05/14
4.9K
3
《Java程序员由笨鸟到菜鸟》电子版书正式发布,欢迎大家下载

在众多朋友的支持和鼓励下,《Java程序员由菜鸟到笨鸟》电子版终于和大家见面了。本电子书涵盖了从java基础到javaweb开放框架的大部分内容。在编写的过程中,难免会出现一些错误,希望大家能...

长平狐
2012/11/12
128
0
《Java程序员由笨鸟到菜鸟》电子版书正式发布,欢迎大家下载

在众多朋友的支持和鼓励下,《Java程序员由菜鸟到笨鸟》电子版终于和大家见面了。本电子书涵盖了从java基础到javaweb开放框架的大部分内容。在编写的过程中,难免会出现一些错误,希望大家能...

长平狐
2012/11/12
112
0
Java 选择那个方向啊

各位前辈 !大家好啊!我初学Java,以前有点c基础。现在不知道Java走那条道啊!(电信?金融?)迷茫啊!电信和金融我都不喜欢的啊!

黑土豆
2012/06/07
913
9

没有更多内容

加载失败,请刷新页面

加载更多

Netty源码学习(一)--导入IDEA并编译

1.从github下载最新的Netty稳定版本源码 2.解压源码文件夹 3.导入IDEA 4.跳过checkstyle和xml validate <plugin> <artifactId>maven-checkstyle-plugin</artifactId> <version>2.12.......

湖之风情
21分钟前
2
0
电商网站用户端FE

需求拆分原则 1、单个迭代不宜太大 2、需求可交付,能够形成功能闭环 3、有成本意识,遵循二八原则 4、有预期的价值体现 提炼核心需求 用户端:商品、购物车、下单、支付、订单、用户 后台管...

星闪海洋
33分钟前
1
0
Awesome Blockchain 区块链技术导航

区块链技术导航:收集整理最全面最优质的区块链(BlockChain)技术开发相关资源。 以后找不到文档资料的时候去导航站看看。 先亮个像,我长这样: 导航站内容 区块链开发所涉及的资源: 如 项目...

Tiny熊
36分钟前
1
0
聊聊我的第一篇10万+,同时反驳某些评论

元旦的时候,我立了一个Flag,今年要写一篇10万+,现在目标算是完成一半了。 终于有了一篇10万+ 知乎后台显示我的回答《如何衡量一个人的 JavaScript 水平?》的阅读量已经超过了10万,具体截...

Fundebug
43分钟前
4
0
ping的用法

ping的用法: -t ping指定的主机,直到停止。若要查看统计信息并继续操作-请键入 Control-Break; 若要停止-请键入Control-C。 -a 将地址解析成主机名。 -n count 要发送的回显请求数。 -l s...

WinkJie
44分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部