点击上方蓝色关注我们!

大家好,我是雄雄,今天我们接着昨天的分享,将剩余的两个内部类(方法内部类和匿名内部类)结束掉,这两个内部类都不太好理解。

昨天的推文:java中常见的几种内部类,你会几个?(未完)

书接上文,昨天我们说到了java中的内部类有四种,分别是:静态内部类、成员内部类、方法内部类、匿名内部类,其中前面两种(静态内部类和成员内部类)我们在昨天已经讲过,现在我们来看看后两种。

方法内部类

顾名思义,一看名字就知道意思系列,方法内部类即在方法的内部声明一个类,代码如下:

//外部类
public class People {private String name ;//方法public People show(){//内部类class Man extends People{//内部类中的方法public void getMan(){System.out.println("名称是:"+name);System.out.println("执行内部类的方法");}}//创建内部类的对象Man man = new Man();//调用内部类的方法man.getMan();return new Man();}//main方法public static void main(String[] args) {People people = new People();people.name = "雄雄的小课堂";people.show();}
}

代码分析:

有一外部类People,然后在里面有一属性name,还有一方法show();接着在show()方法内部创建了一个名为Man的内部类,这里都好说,不好说的是后面调用的时候可能有的伙伴们一下子想不起来;

我们只需要在外部类的这个方法(show())里面实例化内部类,通过该对象名即可调用内部类中的方法。

//方法public People show(){//内部类class Man extends People{//内部类中的方法public void getMan(){System.out.println("名称是:"+name);System.out.println("执行内部类的方法");}}//创建内部类的对象Man man = new Man();//调用内部类的方法man.getMan();return new Man();}

注意,方法内部类相当于方法里面的一个局部变量一样,不能有public 、privatestatic 类的关键词修饰。一般这种方法用的很少。

匿名内部类

匿名内部类和前面介绍的内部类不同,匿名内部类没有单独定义类而是通过new后面是父类或者接口时创建的,代码如下:

People接口:

//外部接口
public interface People {//吃饭public void eat();
}

Man类:

public class Man{public static void show(){//匿名类People p = new People() {@Overridepublic void eat() {System.out.println("正在吃饭……");}};p.eat();}public static void main(String[] args) {Man man = new Man();man.show();}
}

运行结果如图所示:

总结:匿名内部类是没有名字的,所以只能使用一次,他是用来简化代码的,使用的时候,必须继承一个父类或者实现一个接口。

下期内容更精彩,欢迎关注【雄雄的小课堂】

粉丝群

▲每天都会有不定额的红包发放,了解公众号文章、抽奖最新资讯。

往期推荐

java中常见的几种内部类,你会几个?(未完)

java中你知道的这四种代码块吗?

切记!构造函数里面别一定不要初始化其他类,踩过坑的都知道

浅谈我的读书史(2)

浅谈我的读书史(1)

java中,剩下的这两个内部类不太好理解!相关推荐

  1. Java中HashMap遍历的两种方式

    第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Ma ...

  2. Java中创建String的两道面试题及详解

    转载自 Java中创建String的两道面试题及详解 我们知道创建一个String类型的变量一般有以下两种方法: String str1 = "abcd";String str2 ...

  3. java输出值取后两位小数,java中取小数点后两位(四种步骤)

    java中取小数点后两位(四种方法) 一 java.text.DecimalFormat df = new java.text.DecimalFormat("#.##"); dou ...

  4. java中字符串的创建_【转载】 Java中String类型的两种创建方式

    本文转载自 https://www.cnblogs.com/fguozhu/articles/2661055.html Java中String是一个特殊的包装类数据有两种创建形式: String s ...

  5. Java中实现多线程的两种方式之间的区别

    Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线 ...

  6. [转载] 整理下java中stringBuilder和stringBuffer两个类的区别

    参考链接: Java中的StringBuffer类 StringBuilder和StringBuffer这两个类在动态拼接字符串时常用,肯定比String的效率和开销小,这是因为String的对象不会 ...

  7. Java中Http连接的两种方式

    在java中连接http,介绍两种方法,一种是java的HttpUrlConnection,另一种是apacha公司的httpClient,后者是第三方的类库需要从外部,导入,同时这也是第一次使用外部 ...

  8. JAVA中初始化线程的两种方法_java中最简单的方式新起一个线程

    启动一个线程 在一个方法中启动一个线程,有两种方法 第一种是让类实现Runable接口,这样的话编译器就会提示你实现里面的未实现的方法(就是run方法) 第二种是,现在方法中new一个线程,然后直接调 ...

  9. Java中double类型保留两位小数

    java中对double类型的小数经常会有小数点后边保留一位小数或者保留两位小数的需求. javaAPi中提供了一个专门的类BigDecimal,用来对超过16位有效位的数进行精确的运算. 使用步骤: ...

最新文章

  1. Vue 环境搭建(win10)
  2. 技术分享连载(十八)
  3. JNDI学习总结(1)——JNDI入门
  4. VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题
  5. 添加商品php,php – 为首次购买者添加商品到购物车
  6. Bootstrap日期插件之Datetimepicker修改默认语言(附带源码)
  7. mysql存储word文档_使用MySQL存储和检索word文档
  8. alert回调_你知道javascript函数的回调怎么用吗?
  9. 11 Interior-point methods and Conclusions
  10. html彩色背景指令,HTML_第四章 颜色背景的CSS,本 章 C S S 的 主 - phpStudy...
  11. admin 系统被嵌套在第三方系统中的跨域异常
  12. Myeclipse 操作技巧
  13. UIWebView的离线缓存
  14. (整理自网络)怎么样休息
  15. 蝉妈妈对话曹颖:5月带货1.1亿,踩过的坑都变成了卖货的筹码
  16. 新建github分支
  17. 筋膜悬吊面部提升术后悔死了,几天消肿多久有效果
  18. 刘宇凡:解读微信朋友圈策略调整的重要目的
  19. 蓝屏错误处理通用步骤附个人蓝屏解决步骤
  20. 共享流量包FAQ集锦

热门文章

  1. 食物链 POJ - 1182
  2. 关于堆的判断 (25 分)
  3. c++ 位运算_C语言之运算符
  4. CSS padding margin border属性讲解
  5. Arduino_esp32_WiFi代码
  6. hdu1686:KMP板子
  7. [蓝桥杯2016初赛]方格填数
  8. 2021 ccpc 哈尔滨 G. Damaged Bicycle 状压 + 期望dp
  9. Codeforces Round #742 (Div. 2) F. One-Four Overload 构造 + 二分图染色
  10. LuoguP5366 [SNOI2017]遗失的答案