08 Java程序员面试宝典视频课程之内部类
一、方法内部能不能定义类?
答:
可以,是方法内部类
二、说出定义内部类的方式?
答:
A、成员内部类:
1、定义在另一个类(外部类)的内部,与成员方法和属性平级,属于类
的一个成员,可以用 private,defelet,protected,public 四个访问修饰符修饰
2、外部类无法直接访问成员内部类的方法和属性,需要通过内部类的一个实例来访问。
调用方式:
外部类名.内部类名 实例名 = 外部类实例名.new 内部类构造方法(参数)。
public class Person {private String name;public class Son{private int age;public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
//属性name的get set方法
/**调用方法
*/
public static void main(String[] args) {Person p = new Person();Person.Son son=p.new Son();son.setAge(234);System.out.println(son.getAge());}}
B、静态内部类:
static 修饰的成员内部类叫静态内部类(嵌套类)
调用方式:
外部类名.内部类名 实例名 = new 外部类名.内部类名(参数)。
public class Son {private String name;/**静态内部类*/
public static class Terll{private static int age;public static int getAge() {return age;}public static void setAge(int age) {Terll.age = age;}
}
/**调用的方法
*/
public static void main(String[] args) {Son.Terll terll = new Son.Terll();terll.setAge(23);}//name属性的get set 方法}
C、局部内部类:
1、定义在代码块或方法体内的类叫局部内部类。局部内部类只能在代码块和方法体内使用;
public class Son {private String name;/*** 在方法体中定义内部类* */public String getName() {//局部内部类class Terll{private int age;public int getAge() {return age;}public void setAge(int age) {this.age = age;}}return name;} }
D、匿名内部类:
1、特殊的局部内部类;
2、只能使用一次,创建实例之后,类定义会立即消失;
3、必须继承一个类(抽象的、非抽象的都可以)或者实现一个接口;并匿名内部类必须实现其所有抽象方法。
4、匿名内部类不能是抽象类,因为匿名内部类会立即创建一个实例
5、匿名内部类不能定义构造方法,匿名内部类没有类名,但是匿名内部类
拥有父类所有构造方法
6、可以定义代码块,用于实例的初始化。
abstract class User {public abstract void Person();
}
public class ColorTxt {/**
匿名内部类
*/public static void main(String[] args) { User us = new User(){{System.out.println("我是冥名内部类");}@Overridepublic void Person() {}};}
}
三、普通成员内部类能不能直接访问外部类的普通成员?
答:
可以直接访问外部类的成员
public class Person {private String name;public class Son{private int age;public void tell(){System.out.println("外部类"+name);}//内部类的get set方法}//外部类的get set方法和构造方法} /**执行*/public static void main(String[] args) {Person p = new Person("我是外部类");Person.Son son=p.new Son();son.setAge(234);son.tell();}
四、静态成员内部类能不能直接访问外部类普通成员?能不能访问外部类静态成员?
答:
1.不能访问外部类的非静态成员(变量或者方法)。
2.可以访问外部类的静态成员或者方法。
public class Son {
public static String names;
private String name;
public static class Terll{
public void My(){
System.out.println(names+getAge());
} }
//外部类的get set 方法
//调用的方法
public static void main(String[] args) {
Son.setNames(“我是外部类的静态方法”);
Son.Terll terll = new Son.Terll();
terll.My();
}
}
五、什么时候会使用匿名内部类?
答:
类创建对象一次后再也不使用了,就可以使用匿名内部类。
08 Java程序员面试宝典视频课程之内部类相关推荐
- 12 Java程序员面试宝典视频课程之面向对象
一.简述面向对象和面向过程的区别和联系? 答: 两者都是软件开发思想,先有面向过程,后有面向对象.在大型项目中,针对面向过程的不足推出了面向对象开发思想 区别 编程思路不同: 面向过程以实现功能的函数 ...
- 02 Java程序员面试宝典视频课程之异常
一.Java 中,处理异常的两大步是? 答 捕获异常 声明异常 二.如果 catch 两个异常,一个是父类,一个是子类.这两个异常的 catch 顺序如何确定? 答 子类异常在前父类异常在后 三.fi ...
- 13 Java程序员面试宝典视频课程之容器
一.容器指的是"可以容纳其他对象的对象",这种说法对吗? 答: 对.容器自己也是对象,同时可以装其他对象的引用. 二.Collection/Set/List 的联系跟区别? 答: ...
- 09 Java程序员面试宝典视频课程之多线程
一.程序.进程.线程的区别是什么? 答: 程序: 1).是一个指令的集合.程序不能独立执行,只有被加载到内存 中,系统为它分配资源后才能执行 进程: 1).一个执行中的程序称为进程,进程是系统分配资源 ...
- 11 Java程序员面试宝典视频课程之网络编程
一.什么是计算机网络?网络的主要类型有哪些: 答: 计算机网络是将不同地理位置的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实 ...
- 03 Java程序员面试宝典视频课程之常用类
一.为什么需要包装类?包装类的作用是? 答: 因为 java 语言是面向对象的语言,但是java中的基本数据类型却不是面向对象的,而在实际的使用中经常需要将基本数据转化成对象,便于操作. 作用: 1. ...
- 19 java程序员面试宝典视频课程之正则表达式
一.正则表达式是用来做什么的? 答: 正则表达式是用来处理字符串的,可以用一些特定字符来描述字符串里字符出现的规则,从而匹配,提取或者替换符合某一个规则的字符串 二.说出\d,\w,\s,.,[123 ...
- 20 Java程序员面试宝典视频课程之HTML5新标签、功能
一.HTML5认识?(是什么,为什么) 答: 1.HTML5指的是包括 HTML . CSS 和 JavaScript 在内的一套技术组合. 2.HTML4陈旧不能满足日益发展的互联网需要,特别是移动 ...
- 10 Java程序员面试宝典视频课程之Servlet
一.http 全称是什么? 有什么作用? 答: 1.超文本传输协议(HTTP:Hypertext Transport Protocol)是万维网应用层的协议,它通过两个程序实现:一个是客户端程序(各种 ...
最新文章
- Redis面试连环问:集群、复制以及与其他NOSQL数据库的区别?
- This Android SDK requires Android Developer Toolkit version 22.6.2 or above.
- 【Android RTMP】x264 图像数据编码 ( Camera 图像数据采集 | NV21 图像数据传到 Native 处理 | JNI 传输字节数组 | 局部引用变量处理 | 线程互斥 )
- 数字线索: F-35单价已低于四代机,其成本控制是如何实现的?
- 2014年 第5届 蓝桥杯 Java B组 省赛解析及总结
- STM32F103ZET6 蜂鸣器、按键
- Spring Security和多个过滤器链
- 图像算法四:【图像增强--频率域】傅里叶变换、快速傅里叶变换、频域滤波、频域低通滤波、频域高通滤波
- python整数缓存问题
- 计算机组成原理课程要求及目的,《计算机组成原理》课程教学大纲
- 华为HPLC模组全拆解之电力载波收发原理分析
- 帝国php数据库备份,帝国cms备份王怎么使用
- python编写程序实现货币转换_使用Tkinter的Python实时货币转换器
- 《构建之法》读书笔记——第1章 概论
- SpringBoot文件上传遇到的问题及解决方案
- CentOS7 搭建虚拟主机
- 无人驾驶路径规划(三)局部路径规划-Frenet坐标系下的动态轨迹规划
- 计算机图形学中的常用模型
- 像搭积木一样建设的校园网
- [附源码]Sprintboot计算机毕业设计飞越青少儿兴趣培训机构管理系统【源码+数据库+LW+部署】