Java基础 类,内部类
来源:互联网 发布:阿里云 华北5 速度 编辑:程序博客网 时间:2024/05/16 19:11
局部内部类
定义在代码块或者方法体中的类,叫做局部内部类
所有的局部变量的约束在局部内部类上均有
定义语法:
[final] class 类名 [extends 父类名] [implements 接口名1,接口名2]
{
}
注意事项:
1,局部内部类的作用域
从定义这个类开始,到遇到的第一个}结束,这个}与是在定义类的时候,的上一级{配对
2,局部内部类可以直接访问外部类的成员
如果发生重名则使用外部类名.this.变量名|外部类名.this.方法名([参数...]); 访问外部类的成员
3,局部内部类不能直接访问与之在同一个方法体中的局部变量
但是如果将同一个方法体中的局部变量用final修饰则可以访问(前提:在局部内部类中没有与需要访问的变量重名的变量)
匿名内部类
就是内部类的一种简写的方式,只不过,匿名内部类只能使用一次
1,写匿名内部类时,这个内部类一定要继承一个父类或者实现一个接口
2,匿名内部类定义及使用语法
new 父类名|接口名(){
实现或者重写父类的方法,如果是接口或抽象类,则必须重写所有的抽象方法
}.需要调用的方法名();
3,匿名内部类可以直接访问外部类的成员变量和成员方法
如果发生重名则使用外部类名.this.变量名|外部类名.this.方法名([参数...]); 访问外部类的成员
接口
可以理解为是比抽象类更加抽象的一个特殊的抽象类
里面只能声明定义常量和抽象方法
定义语法:
[修饰符] interface 接口名 [extends 父接口1,父接口2]
{
//常量默认有public static final修饰,所以声明的时候可以只写 数据类型 变量名 = 数据值 ;
常量
//抽象方法默认有 public abstract 修饰,所以声明的时候可以只写 void|返回值的数据类型 方法名([参数类型 参数1 ,...]);
抽象方法
}
接口的作用:用来规范编程,是编程过程的一个约定
使用接口的好处:
1,降低程序的耦合度
2,提高程序的重用性
3,提高程序的扩展性
4,实现了多继承
接口如何使用:
接口的使用必须有类实现 这个类叫做接口的实现类
类实现接口的声明语法 需要用到关键字 implements
[修饰符] class 类名 [extends 父类名] [implements 接口名1,接口名2....]
{
//必须重写所有接口中的方法
}
提问,接口和实现类之间,是否能够进行向上或者向下转型?
可以进行向上向下转型
内部类:
定义在类中的类叫做内部类
内部类的分类:
成员内部类
静态内部类
局部内部类
匿名内部类
成员内部类
声明的位置:声明为成员,就是和成员变量,成员方法同级
所有修饰成员变量的修饰符,均可用在成员内部类上
定义语法与普通类的定义语法一样
成员内部类定义与使用注意事项:
1,成员内部类可以直接访问外部类的成员变量和成员方法,
如果成员内部类中的变量与外部类中的变量发生重名时,使用 外部类名.this.变量名 访问外部成员变量
如果成员内部类中的方法与外部类中方法发生重名时, 使用 外部类名.this.方法名([参数]) 访问外部类的成员方法
2,成员内部类的使用
1,可以将成员内部类直接声明为外部类的成员变量
2,可以将成员内部类直接声明为外部类的局部变量
3,在其他类中如何创建成员内部类的对象?
1)创建外部类的对象
2)声明并创建内部类的对象
语法 : 外部类名.内部类名 内部类的对象名 = 外部类对象名.new 内部类名([参数....]);
3)调用内部类的方法
内部类名.内部类方法名();
静态内部类
声明位置:和成员内部类一致,只不过是将成员内部类 使用static修饰
使用注意点:
1,只能访问外部类的静态成员变量和成员方法
如果内部类中的变量与外部类中的静态变量发生重名时,使用 外部类名.变量名 访问外部成员变量
如果内部类中的方法与外部类中的静态方法发生重名时, 使用 外部类名.方法名([参数]) 访问外部类的成员方法
2,只有静态内部类中的成员才可以用static修饰
3,外部类访问内部类的静态方法和变量,可以直接使用内部类名.方法名([参数...]);| 内部类名.变量名;
外部类访问静态内部类的实例方法和实例变量,使用方法与成员内部类一致
4,在其他类中创建静态内部类对象?
外部类名.内部类名 内部类对象名 = new 外部类名.内部类名([参数...]) ;
5,在其他类中访问静态内部类的静态方法
外部类名.内部类名.静态方法名([参数....]);
阅读全文
0 0
- Java基础 类,内部类
- Java基础篇(内部类,匿名类,匿名内部类)
- java基础 内部类
- java基础--内部类
- java基础<内部类>
- java基础--内部类
- Java基础 内部类
- java基础:内部类
- Java基础----内部类
- java基础--内部类
- Java基础--内部类
- java基础--内部类
- java基础-内部类
- java基础-内部类
- Java 基础----内部类
- java-基础-内部类
- Java内部类基础
- java基础-内部类
- 初次使用QT5串口类QSerialPort
- 进程调度API之__wake_up
- Android监控wifi连接状态
- 块元素和行内元素
- Ubuntu安装*.deb程序,用gdebi
- Java基础 类,内部类
- Linux命令date 日期时间和Unix时间戳互转
- 支付宝支付集成
- 使用MyBatis Generator自动生成代码生成器插件
- 目录树、Webstrom快捷键、Web请求响应模型、软件开发明明规则
- Java基础 时间
- 7号
- NYOJ 1340 JOINTW的数量问题
- 人人都是艺术家!谈谈那些奇怪的字符