内部类的概念 与分类:
一个类是用来模拟一个事物的,如果一个事物的内部包含另一个事物,那么这也就是一个类内部包含另一个类。
例如: 身体和心脏的关系。又例如:汽车和发动机的关系。

分类:
1,成员内部类:
2,局部内部类:(包含匿名内部类):

成员内部类的定义格式:
修饰符 calss 外部类名称{
修饰符 calss 内部类名称{
//…
}
//…
}
注意:内部类使用外部类,我们叫内用外,可以随意访问;外用内,需要内部类对象。

=============
如何使用内部类,有两种方式:
1,间接方式:在外部类的方法当中,使用内部类:然后main只是调用外部类的方法。
2,直接调用:公式:
类名称 对象名= new 类名称();
【外部类名称.内部类名称 对象名 = new 外部类名称().new 内部类名称();】

public class Body {//外部类public class Heart{//成员内部类//内部类的方法public void beat(){System.out.println("心脏跳动:蹦蹦蹦");System.out.println("我叫:" + name);//正确写法!}}//外部类的成员变量private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}//外部类方法public void methodBody(){System.out.println("外部类的方法");
//      Heart heart = new Heart();//   heart.beat();new Heart().beat();//匿名对象}}

使用

public class Demo01InnerClass {public static void amin(String[]args){Body body = new Body();//外部类的对象//通过外部类的对象,调用外部类的方法,里面间接在使用内部类Heartbody.methodBody();System.out.println("===========");//按照公式写;Body.Heart heart = new Body().new Heart();heart.beat();}
}

内部类的同名(重名)变量访问:
如果出现了重名现象,那么格式是:外部类名称.this.外部类成员变量名

public class Outer {int num = 10;//外部类的成员变量public class Inner /*extends Object*/{int num = 20;//内部类的成员变量public void methodInner(){int num = 30;//内部类方法的局部变量System.out.println(num);//局部变量,就近原则System.out.println(this.num);//内部类的成员变量System.out.println(Outer.this.num);//外部类的成员变量}}}
public class Demo02InnerClass {public static void main(String[]args){//外部类名称.内部类名称 对象名 = new外部类名称().new 内部类名称();Outer.Inner obj = new Outer(). new Inner();obj.methodInner();}
}

如果一个类是定义在一个方法内部的,那么这就是一个局部内部类。
“局部”:只是当前所属的方法才能使用它,出了这个方法外面就不能使用了。

定义格式:
修饰符 class 外部类名称{
修饰符 返回值类型 外部类方法名称(参数列表){
class 局部内部类名称 {
//…
}
}
}

局部在方法里面,成员在方法外面。

小节一下类的权限修饰符:
public > protected > (default) > private
定义一个类的时候,权限修饰符规则;
1,外部类:public /(default) 这两种可以,其它不行
2,成员内部类:public /protected/(default)/private
3,局部内部类: 什么不能写。注意不是(default)

public class Outer {public void methodOuter(){class Inner{//局部内部变量int num = 10;public void methodInner(){System.out.println(num);//10}}Inner inner = new Inner();inner.methodInner();}
}
public class DemoMain {public static void main(String[]args){Outer obj = new Outer();obj.methodOuter();}
}

老王学java8周第一天相关推荐

  1. 老王学jsp之dom解析xml

    xml是一种数据的存储方式,标签完全由用户自定义,是一种树状的结构,必须完全匹配,比如: <?xml version="1.0" encoding="GBK&quo ...

  2. 学python的基础-老司机学python篇:第一季(基础速过、机器学习入门)

    本课程正在限时优惠中,请尽快购买 原价:¥350 优惠价:¥999.00 章节导航 课程大纲 第一章:python基础速过篇 开张课.我们直接开门见山,对着文档先把最基本的东西学一下.注意:关键看视频 ...

  3. 老王学linux-centos6.7drbd8.4.3

    最下面有包 复制模块到内核中 cp drbd.ko /lib/modules/`uname-r`/kernel/lib/ depmod             更新内核包关联文件modules.dep ...

  4. 老王学linux-更改语言

    一.修改/etc/sysconfig/i18n文件,如LANG="en_US",xwindow会显示英文界面,LANG="zh_CN.GB18030",xwin ...

  5. 跟着老王学python

    正在学习python中,讲的确实不错,非常值得学习.需要的朋友可以参考:http://forum.ubuntu.org.cn/viewtopic.php?f=88&t=341507&v ...

  6. 老王学java之This()的用法

    This指当前对象,this()则是指构造方法,this()表示无参构造方法,this(1.0)表示参数为一个浮点数的构造方法,以此类推 class Person{ // 定义Person类priva ...

  7. 老王学linux-ftp

    FTP:File TransferProtocol 21/tcp: 文件共享服务:应用层,ftp NFS:Network File System (RPC: Remote Procedure Call ...

  8. 老王学linux-系统安全

    原本的bash不是很强大排查问题不方便需要添加一些命令: /etc/bashrc HISTFILESIZE=4000 HISTSIZE=4000 HISTTIMEFORMAT='%F %T ' exp ...

  9. 【老王读Spring AOP-3】Spring AOP 执行 Pointcut 对应的 Advice 的过程

    Spring AOP 执行 Pointcut 对应的 Advice 的过程 前言 版本约定 正文 jdk proxy 是如何执行 Pointcut 对应的 Advice 的? 获取 Advice 链的 ...

最新文章

  1. lvs中dr模式配置脚本
  2. Java多线程中的Runnable和Thread
  3. gp338信令_【对讲机的那点事】摩托罗拉GP338的MDC1200信令选呼如何编程?
  4. 要学会Python爬虫都需要什么基础呢?
  5. Linux下,sqlite简单实例
  6. iis php网站500错误原因_如何解决iis php 500错误问题
  7. 第67课 选择排序 改进例67.1 《小学生C++编程入门》
  8. sevlet中web.xml 文件
  9. Python之基础练习题
  10. 工具的使用——windows操作系统的使用(二)
  11. php修改sessiob时间_php中session过期时间设置
  12. Visual Studio 单元测试之六---UI界面测试
  13. Servlet请求和响应
  14. 一个简单的爬虫例子-天气
  15. vs2008简体中文正式版序列号和下载地址
  16. 华硕 ROG STRIX Z690-A GAMING WIFI D4 i7-13700K 黑苹果efi引导文件
  17. Hibernate第五篇【inverse、cascade属性详解】
  18. PS抠章、去水印-你懂得
  19. [Android相机]光线传感器识别环境光亮强度
  20. 2017北京世界食品博览会会刊(参展商名录)

热门文章

  1. 每日一练20210426
  2. UT源码_105032014126(改)
  3. 【服务器搭建个人网站】教程四:域名怎样进行备案?快来看~
  4. 一本永不过时的元宇宙专著《元宇宙:通往无限游戏之路》
  5. Python案例学习—yuC
  6. 【图像检测】基于形态学实现水果缺陷检测matlab源码
  7. 大学Java基础课程设计——网络聊天室
  8. EDT(异地通)区块链技术将极大影响的全行业,其中包括支付行业。
  9. 基于堆优化算法的函数寻优算法
  10. FoodKG- A Semantics-Driven Knowledge Graph for Food Recommendation