(14)Java学习笔记——面向对象07——内部类
来源:互联网 发布:ubuntu查看jdk 编辑:程序博客网 时间:2024/06/14 11:17
内部类
将一个类定义在另外一个类的里面,对里面那个类就称为内部类(内置类,嵌套类)
内部类的访问特点:
1/内部类可以直接访问外部类中的成员,包括私有。
2/外部类要访问内部类,必须建立内部类的对象。
一般用于类的设计。
分析事物时,发现该事物描述中还有事物,而且这个事物还只访问被描述事物的内容。
这时就把还有的事物定义成内部类来描述。
范例01:
class InnerClassDemo01 {public static void main(String[] args) {Outer out = new Outer();out.method();}}class Outer//外部类{private int num = 3;class Inner//内部类{void show(){System.out.println("show num="+num);}}public void method()//创建一个内部类的对象,用于访问内部类{Inner in = new Inner();in.show();}}
内部类的位置:
----| 成员位置:在成员位置的定义的类,被称为成员内部类。
----| 局部位置:在局部位置定义的类,被称为局部内部类。
范例:02 (内部类的位置)
class Outer{private int num = 10;//成员位置class Inner//成员内部类{}public void method(){//局部位置class Inner//局部内部类{}}}
————————————————
成员内部类
直接访问外部类中的内部类中的成员
格式:
外部类名 . 内部类名 对象名 = new 外部类对象 . new 内部类对象;
Outer . Inner in = new Outer() . new Inner() ;
in.show();
范例03:(直接访问外部类中内部类的方法)
/*直接访问外部类中内部类的成员方法*/class Outer//定义一个外部类{private int num = 10;class Inner//定义一个成员内部类{public void show(){System.out.println(num);}}}class InnerClassDemo_03 {public static void main(String[] args) {Outer.Inner oi = new Outer().new Inner();//通过此格式直接访问外部类中内部类的成员方法oi.show();}}
成员内部类的修饰符:
a / private 为了保证数据的安全性
b / static 为了让数据更方便访问
----| 被静态修饰的成员内部类只能访问外部类的静态成员
----| 成员内部类被静态修饰后的访问方式:
格式:
外部类名 . 内部类名 对象名 = new 外部类名 . 内部类名();
Outer . Inner in = new Outer . Inner();
in.show();
如果内部类中定义了静态成员,该内部类也必须是静态的。
内部类和外部类没有继承关系。
——————————————————
局部内部类
----| 可以直接访问外部类的成员
----| 在局部位置,可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能
----| 局部内部类访问的局部变量必须被final修饰
范例01:
class InnerClassTest03 {public static void main(String[] args) {Outer out = new Outer();out.method();}}class Outer{int num = 3;void method(){final int x = 9;//从内部类中访问局部变量,需要被声明为最终类型finalclass Inner//局部内部类{void show(){System.out.println("show...."+x);}}Inner in = new Inner();//定义一个局部内部类的对象in.show();}}
————————————————————————————————————————————————————
匿名内部类
匿名内部类就是内部类的简写格式(匿名对象是对象的简写格式)
前提:
存在一个类或者接口
---|这个类可以是具体类也可以是抽象类。
格式:
new 类名 或者 接口名()
{
重写方法;
};
匿名内部类的本质:
是一个继承了该类伙着实现了该接口的子类匿名对象。
范例:
interface Inter//定义一个接口{public abstract void show();public abstract void show2();}class Outer{public void method(){Inter i = new Inter()//匿名内部类的格式: new 类名或接口名(){重写方法};匿名内部类本质是该类的子类匿名对象。用到多态。{public void show(){System.out.println("show");}public void show2(){System.out.println("show2");}};//注意这里有分号i.show();i.show2();}}class InnerDemo_04 {public static void main(String[] args) {Outer o = new Outer();o.method();}}
- (14)Java学习笔记——面向对象07——内部类
- 黑马程序员 java学习笔记——面向对象3:多态(含内部类)
- 面向对象—14—内部类
- 【学习笔记14】java面向对象-成员内部类、局部内部类
- Java面向对象——(匿名)内部类
- 黑马程序员 Java面向对象——(匿名)内部类
- 黑马程序员 Java面向对象——(匿名)内部类
- 黑马程序员 Java面向对象——(匿名)内部类
- 【Java】学习笔记——内部类
- Java学习笔记——内部类
- java学习笔记——内部类
- 学习笔记——JAVA 内部类
- 面向对象——内部类
- 面向对象——内部类
- 面向对象——匿名内部类
- 黑马程序员——Java面向对象之抽象类 接口 内部类笔记
- java笔记——初学面向对象08匿名内部类
- 黑马程序员——【Java】面向对象——内部类_匿名内部类
- JavaScript基础
- redis.conf 配置 详解 中文 2.8
-  兼容性(空格兼容性)
- BZOJ3139: [Hnoi2013]比赛
- XSS跨站脚本攻击
- (14)Java学习笔记——面向对象07——内部类
- POJ-1442 Black Box,treap名次树!
- Hibernate (四)基本特性
- Vue.js教程2-模板语法
- CMake 手册详解(四)
- Card NUmbers 给N个值为1-24的数 2+2=4 则会删去两个2和一个四 求剩下数的最小和
- jstat查看jvm的GC情况
- 8天学通MongoDB——第七天 运维技术
- 日期格式化工具DateUtils