java(20130730)内部类、反射、封装类
来源:互联网 发布:最优化导论中文版 编辑:程序博客网 时间:2024/04/26 03:40
内部类
在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类
内部类和外层封装它的类之间存在逻辑上的所属关系
Inner class一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称。 Inner class的名字不能与包含它的类名相同;
Inner class可以使用包含它的类的静态和实例成员变量,也可以使用它所在方法的局部变量;
内部类能够访问创建它 的对象的实现,包括私有成员(能访问定义内部类的类的私有成员方法和成员变量)
内部类能够隐藏起来,不为同一包中的其他类所见(在内部类的访问修饰符用private)
使用内部类在编写事件驱动程序时很方便.
普通内部类(成员内部类)
静态嵌套类(静态内部类)
局部内部类
匿名内部类:没有名字的内部类,这是Java为了方便我们编写程序而设计的一个机制。因为有时候有的内部类只需要创建一个它的对象就可以了,以后再不会用到这个类,这时候使用匿名内部类就比较合适
成员内部类(普通内部类):
格式:
class 外部类名{
访问修饰符 修饰符变量类型 变量名称;
访问修饰符 修饰符返回值类型 成员方法名称(参数列表){方法体}
访问修饰符 class 内部类名称{
访问修饰符修饰符 变量类型 内部类成员变量名称;
访问修饰符修饰符 返回值类型 内部类成员方法名称(参数列表){方法体}
}
}
实例化成员内部类格式:
1.类中
内部类名 pic =new内部类名();//同一个类中实例化内部类
2.类外部:
外部类名变量1 = new外部类名();
外部类名.内部类吗名变量2 =变量1.new内部类名();//类外部:实例化成员内部类 固定格式
静态内部类
Public class 外部类名{
访问修饰符 修饰符变量类型 变量名称;
访问修饰符 修饰符返回值类型 成员方法名称(参数列表){方法体}
访问修饰符 staticclass 内部类名称{
访问修饰符修饰符 变量类型 内部类成员变量名称;
访问修饰符修饰符 返回值类型 内部类成员方法名称(参数列表){方法体}
}
}
实例化成员内部类格式:
1.类中
内部类名 pic =new内部类名();//同一个类中实例化静态内部内部类
2.类外部:
外部类名.内部类吗名变量2 =new外部类名.内部类名();//类外部:实例化静态内部类 固定格式
局部内部类(定义类中的方法体中,作用范围就只在此方法体中):
格式:
Public class 外部类名{
访问修饰符 修饰符变量类型 变量名称;
访问修饰符 修饰符返回值类型 成员方法名称(参数列表){
class 局部内部类名称{
变量类型 内部类成员变量名称;
返回值类型 内部类成员方法名称(参数列表){方法体}
}
局部内部类名 变量 = new 局部内部类名();//只能在此方法中实例化此局部内部类对象
}
}
匿名内部类
publicclass Person {
intage;
String name;
publicvoid meth(){
System.out.println("meth");
}
}
publicclass Studentextends Person {
intage=10;
String name="zhangsan";
publicvoid meth(){
System.out.println("我是匿名内部类中的方法");
}
}
publicstaticvoid main(String[] args) {
Person p = new Person(){//匿名内部类
intage=10;
String name="zhangsan";
publicvoid meth(){
System.out.println("我是匿名内部类中的方法");
}
};
p.meth();
System.out.println(p.name);
Person p1 = new Student();//类名:Student
p1.meth();
System.out.println(p1.name);
}
反射:
// //反射
try {
Class class1 = Class.forName("com.etc.classreflection.Dog");//加载此路径的这个类*
System.out.println(class1.getName());//获取类全路径名称
Dog dog = (Dog)class1.newInstance();//构建此类的一个实例*
//等价
//Dog dog = new Dog();
// dog.meth();//调用此实例的方法
Method[] dm = class1.getMethods();
for(Method m:dm){
System.out.println("方法名称"+m.getName());
if(m.getName().equals("meth")){
m.invoke(dog, args);//调用此类中的具体方法*
}
}
} catch (Exception e) {
e.printStackTrace();
}
什么是封装类
基本数据类型以类的形式体现
基本数据类型
封装类
boolean
byte
short
int
long
char
float
double
Boolean
Byte
Short
Integer
Long
Character
Float
Double
- java(20130730)内部类、反射、封装类
- Java反射内部类
- Java反射内部类
- Java反射内部类
- 封装(内部类)
- java封装中的内部类
- Java学习笔记(七)反射及内部类
- java 反射实例化内部类
- Java中的内部类和反射
- Java通过反射创建内部类
- Java反射获取内部类的实例
- 21.ArrayList内部类迭代器 + java 反射
- Java反射获取内部类的实例
- Java反射与内部类复习总结
- Java 反射中的内部类的问题!!!
- Java封装(修饰符+包+内部类)
- 封装,以及java中的内部类
- Java内部类(成员内部类、局部内部类、静态内部类、匿名内部类)
- 单例模式lua实现
- Linux 多线程应用中如何编写安全的信号处理函数
- mini2440开发板 supervivi无法下载以及windows 7下usb驱动安装不成功的问题的解决方法
- SignalHandler
- XML文件配置Bean
- java(20130730)内部类、反射、封装类
- cygwin本地软件包、本地包下载链接地址,已下载成功
- 13个mysql数据库的实用SQL小技巧
- select 使用
- 傅里叶变换的意义
- 找出字符串中对称的子字符串的最大长度(最长回文)
- 阿里2013年双十一准备中的技术突破与亮点
- iOS 7用户界面过渡指南(下):更新UI
- Java中数组排序函数