黑马程序员_1_内部类访问规则(1)
来源:互联网 发布:php 编译 加密 编辑:程序博客网 时间:2024/05/29 14:12
--------------------------------android培训、java培训、期待与您交流! ---------------------------------------
内部类访问规则
内部类定义:
当一个类需要直接访问一个类时,可定义为内部类。
定义了内部类后,他的访问规则也有了小变化,一下举例说明。
*
*
定义一个A类为外部类,再定义一个非静态B类为A类中的内部类,B类中有个非静态show()函数。
非静态的外部类A 非静态的内部类B 内部类B中Show()函数
这时可以分三种情况去访问show()函数:
1、main()函数访问Show():
分析:B类是A类中的非静态类,要访问B类中的非静态函数,首先要建立B的对象才能访问。
2、在B类中访问show():
分析:Show()函数是属于B类的成员,所以可以直接访问。
3、在A类中访问show():
分析:Show()函数是属于B类的成员,要访问show()函数,也需要建立对象才能访问,
由于B类在A类内,所以可以直接创建B类对象,然后调用Show()函数。
以上就是外部类、内部类与内部函数都为非静态的时候。
*
*
用图来显示
非静态的外部类A 静态的内部类B 内部类B中非静态Show()函数
Class A
{
Static Class B
{
Void Show()
{
System.out.println(“我是B类的show函数”);
}
}
}
1、main()函数访问Show().
分析:B类是A类的成员,成员变成了静态,所以可以直接访问到。
但是Show()函数在B类中非静态,要访问到还需建立其对象才能访问。
2、B类访问Show().
分析:Show()在静态B类中,B类想访问,只要函数名就可以直接访问。
所以在B类中可以直接Show()或者this.show();访问
3、A类访问Show()
分析:B在A中,B属于A的静态成员,所以A可以直接用B。
但是B里面的函数确实非静态的,想要调用还需创建B类对象。
这些是当内部类为静态的情况。
-----------------------------------------------------------------------------------------------------------------------
如果内部类与内部类的函数都是静态呢?
非静态的外部类A 静态的内部类B 内部类B中静态Show()函数
Class A
{
Static Class B
{
Static Void Show()
{
System.out.println(“我是B类的show函数”);
}
}
}
1、在mian()里访问Show().
分析:静态B是A对象的成员,所以可以直接访问;静态Show()属于B()对象的成员,所以也可以直接访问。
Class MainTest
{
Public static void main(String[] args)
{
A.B.Show();//外部类类名。内部类类名。函数名 就可以直接访问。
}
}
3、A类中访问Show();
分析:本类中访问本类成员只需成员名可以直接访问。而且又是静态的成员,所以不用建立对象。
Class A
{
Void Temp()
{
B.Show();
}
Static Class B
{
Static Void Show()
{
System.out.println(“我是B类的show函数”);
}
}
}
----------------------------------android培训、java培训、期待与您交流! --------------------------------------
- 黑马程序员_1_内部类访问规则(1)
- 黑马程序员-----内部类的访问规则(黑马视频)
- 黑马程序员_内部类的访问规则:
- 黑马程序员———内部类的访问规则
- 黑马程序员_day09 面向对象(内部类访问规则,静态内部类,内部类定义原则,匿名内部类)
- 黑马程序员 java 基础 毕向东 面向对象 内部类访问规则
- 内部类访问规则
- 内部类访问规则
- 内部类(访问规则和静态内部类)
- 黑马程序员 static情况下内部类调用规则
- 黑马程序员 非静态情况下内部类调用规则
- 黑马程序员---内部类
- 黑马程序员-内部类
- 黑马程序员-内部类
- 黑马程序员-内部类
- 黑马程序员-内部类
- 黑马程序员-内部类
- 黑马程序员--内部类
- 项目Go与ffmpeg-20131017-git-0bf8580结合过程
- CentOS-6.3安装使用MongoDB
- netbeans android 配置
- 黑马程序员_异常及处理
- cocos2dx三种定时器的使用以及停止schedule,scheduleUpdate,scheduleOnce
- 黑马程序员_1_内部类访问规则(1)
- JAVA反射机制的认识 超有爱的超屌的
- iOS学习:调用相机,选择图片上传,带预览功能
- Linux下线程池的创建
- VS2012下boost 配置与使用
- Cocos2d-x PluginX (二)增加新的Plugin
- LeetCode Best Time to Buy and Sell Stock I,II,III
- mysql导出数据库表结构和数据
- async & await 的前世今生(Updated)