29.面向对象-----类的成员之内部类
2020-03-30 08:02:11来源:博客园 阅读 ()
29.面向对象-----类的成员之内部类
在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类。1.内部类的分类
成员内部类(静态和非静态)和局部内部类(方法内、代码块内、构造器内)2.成员内部类的理解
一方面,作为外部类的成员:
>调用外部类的结构
>可以被static修饰
>可以被4种不同的权限修饰
另一方面,作为一个类:
> 类内可以定义属性、方法、构造器等
> 可以被final修饰,表示此类不能被继承。言外之意,不使用final,就可以被继承
> 可以被abstract修饰
特点:
- 成员内部类可以无条件的访问外部类的所有的成员属性和方法不受 private 和 static影响
- 当内部类的成员属性或者方法与外部类的同名时,会发生隐藏现象。直接在内部类中调用的是内部类的成员属性和方法。需要用 “外部类”.this.成员变量/成员方法
- 如果外部类需要访问内部类,需要生成内部对象,才能访问内部类对象。
- 成员内部类是依附外部类存在的,如果需要访问成员内部类,那么一定需要先创建外部类。
-
由于成员内部类的以为外部类的成员的方式存在,所以类修饰可以用 private public protect 无权限的修饰符修饰来表示内部的访问权限的问题。而外部内不可以。
public class test { public static void main(String[] args) { //创建静态的成员内部类的对象 Person.Inner2 inner2 = new Person.Inner2(); //创建非静态的成员内部类的对象 Person p = new Person(); Person.Inner1 inner1 = p.new Inner1(); inner1.show();//name = 小张, age = 23 inner2.show();//静态成员内部类 } } class Person{ String name; int age; //非静态成员内部类 class Inner1{ public void show(){ name = "小张"; age = 23; System.out.println("name = " + name + ", age = "+ age); } } //静态成员内部类 static class Inner2{ public void show(){ System.out.println("静态成员内部类"); } } public void eat(){ System.out.println("人吃饭"); } }
3.如何在成员内部类中调用外部类的结构?
class Person{ String name = "小明"; public void eat(){ } //非静态成员内部类 class Bird{ String name = "杜鹃"; public void display(String name){ System.out.println(name);//方法的形参 System.out.println(this.name);//内部类的属性 System.out.println(Person.this.name);//外部类的属性 //Person.this.eat(); } } }
4.局部内部类
特点:
- 不能用访问权限修饰符关键字
- 作用区间只在申明的局部内
5.匿名内部类
特点:
- 匿名内部类不能使用 static 和权限修饰符
- 匿名内部没有构造器。通过new XXX 的生成一个对象引用。
- 匿名内部类属于局部内部类,所有局部内部类限制的条件在匿名内部中依然有效
作者:Java之美
日期:2020-03-30
原文链接:https://www.cnblogs.com/897463196-a/p/12596162.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:我是如何用IDEA调试BUG的?
- 通过与C++程序对比,彻底搞清楚JAVA的对象拷贝 2020-06-11
- Java笔记:集合 2020-06-10
- Java基础复习——类和对象 2020-06-09
- JSP九大内置对象 2020-06-07
- java对象指向问题 2020-06-07
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash