Java内部类,枚举
模式:
模板模式:
简单工厂模式:
适配器模式:
interface ICellPhone
{
void sendMsg();
}
class Android implements ICellPhone
{
public void sendMsg()
{
System.out.println("我爱你");
}
}
class ITCAST implements ICellPhone
{
public void sendMsg()
{
System.out.println("I Love You");
}
}
class CellPhoneFactory
{
public static ICellPhone getInstance(String type)
{
ICellPhone p=null;
if("Android".equals(type))
{
p=new Android();
}
if("ITCAST".equals(type))
{
p= new ITCAST();
}
return p;
}
}
class FactoryDemo
{
public static void main(String[] args)
{
ICellPhone p=new Android();
p=CellPhoneFactory.getInstance("ITCAST");
p.sendMsg();
p=CellPhoneFactory.getInstance("Android");
p.sendMsg();
}
}
接口: 一种规范,一种标准
interface 接口名 {}
接口里的成员:
1. 全局变量 : 这里定义的变量,默认是使用 public static final 修饰的
2. 公共的抽象方法 : 默认使用 abstract public 修饰的
3. 内部类
特点:
没有构造方法,不能实例化
接口和接口之间可以多继承, 接口里全是抽象方法,不能有普通方法
使用接口:
interface IPCI
{
void usePCI();
}
interface IUSB //接口
{
void swapData();
}
class MouseUSBImpl implements IUSB,IPCI
{
public void swapData()
{
System.out.println("鼠标在移动");
}
public void usePCI()
{
System.out.println("PCI鼠标");
}
}
class USBDemo2
{
public static void main(String[] args)
{
//IUSB mouse=new MouseUSBImpl();
MouseUSBImpl mouse=new MouseUSBImpl();
mouse.swapData();
mouse.usePCI();
}
内部类:
外部类: 宿主类
内部类: 嵌套类
1. 非静态内部类 : 内部类没有使用 static 修饰, 此时 内部类属于 外部类的一个对象,也就是说创建内部类对象之前应该先创建外部类对象
外部类 out = new 外部类();
外部类.内部类 in = out.new 内部类();
2. 静态内部类 : 内部类使用了 static 修饰,此时内部类属于 外部类,也就说,外部类可以直接调用内部类
外部类.内部类 in = new 外部类.内部类();
3. 局部内部类, 在方法里创建类
4. 局部内部类的一个特殊, 匿名内部类:
没有名字的局部内部类,只能用一次
1. 不能是抽象类
2. 没有构造方法
创建格式:
new 父类(参数){
//覆写父类的方法
}
new 接口()
{
//覆写接口里的方法
}
一旦一个方法需要一个对象的时候,而该对象有父类或接口的时候
void useUSB(IUSB usb){
usb.use();
}
useUSB(new IUSB(){
public void use(){
}
});
创建线程的时候,AWT添加事件的时候,Android添加事件
枚举:
声明:
enum 枚举名
{
对象名(),对象2;//对象必须写在第一行,并且和其他成员使用 分号隔开
构造方法,默认是 private 修饰的无参构造方法
对象,默认都是 全局常量 public static final 枚举名 对象 = new 枚举名();
}
枚举的直接父类: java.lang.Enum类,抽象类
访问枚举对象: 枚举名.对象 == 枚举名.对象; ?//相等
对象后面带():
对象后带{}: 表示该对象是枚举类的匿名内部类对象;
每个枚举类都有一个静态方法 values().将返回一个枚举类型的一维数组,里面装的是该枚举类的全部对象
enum Gender{
MAN,WOMAN;
}
Gedner[] gs = Gender.values();
每个枚举类都有一个静态的方法 valueOf(String name);//name严格区分大小写
Gender man = Gender.valueOf("MAN");//
打印枚举对象的时候,打印出来的是 对象的名;这是因为 java.lang.Enum类覆写了toString方法
enum Gender
{
MAN(),WOMAN{},NONE;
//MAN等价于 public static final MAN=new Gender();
private Gender()
{
}
}
class EnumDemo extends Object
{
public EnumDemo()
{
}
public static void main(String[] args)
{
Gender man=Gender.MAN;
Gender man1=Gender.MAN;
System.out.println(man);
System.out.println(man==man1);
Gender[]gs=Gender.values();
for(Gender g:gs)
{
System.out.println(g);
}
//Gender women = Gender.valueof("woman");
//System.out.println(women);
}
}
public String toString()
{
String ret = super.toString();
switch(this){
case MAN:
ret = "男";break;
case WOMAN:
ret = "女";break;
default:
ret="保密";
}
return ret;
}
枚举的构造方法:
enum Gender{
MAN("男"),WOMAN("女"),NONE("保密");
//默认: private Gender(){};
private String ObjValue;
privte Gender(String value)
{
objValue = value;
}
public String toString()
{
return this.objValue;
}
}
枚举实现接口:
有两种写法:
1. 直接在枚举类里覆写方法
2. 在枚举类的匿名内部类里覆写;
枚举实现单例模式:
enum Singleton
{
INSTANCE;
public static Singleton getInstance(){
return INSTANCE;
}
//private Singleton(){}, 默认的
}
//使用反射,都不能在外界创建SIngleton对象;
Java内部类,枚举的更多相关文章
- Java学习--枚举
枚举类型enum,地位等同于class,interface 使用enum定义的枚举类型,也是一种变量类型,可用于声明变量 枚举的一些特征 1.它不能有public的构造函数,这样做可以保证客户代码没有 ...
- Java内部类final语义实现
本文描述在java内部类中,经常会引用外部类的变量信息.但是这些变量信息是如何传递给内部类的,在表面上并没有相应的线索.本文从字节码层描述在内部类中是如何实现这些语义的. 本地临时变量 基本类型 fi ...
- Java内部类详解
Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就 ...
- 黑马----JAVA内部类
黑马程序员:Java培训.Android培训.iOS培训..Net培训 黑马程序员--JAVA内部类 一.内部类分为显式内部类和匿名内部类. 二.显式内部类 1.即显式声明的内部类,它有类名. 2.显 ...
- java 内部类 *** 最爱那水货
注: 转载于http://blog.csdn.net/jiangxinyu/article/details/8177326 Java语言允许在类中再定义类,这种在其它类内部定义的类就叫内部类.内部类又 ...
- java内部类和匿名内部类
内部类即是包含在类里面的又一个类. java内部类分为: 成员内部类.静态嵌套类.方法内部类.匿名内部类 . 内部类的共性 (1).内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.clas ...
- Java内部类小程序(成员内部类,静态内部类,匿名内部类)
/** * 测试java内部类(成员内部类,静态内部类,匿名内部类) * 局部内部类不常用,就不写了. * @package :java05 * @author shaobn * @Describe ...
- [转] Java内部类详解
作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置 ...
- java内部类的作用分析
提起Java内部类(Inner Class)可能很多人不太熟悉,实际上类似的概念在C++里也有,那就是嵌套类(Nested Class),关于这两者的区别与联系,在下文中会有对比.内部类从表面上看,就 ...
- 9)Java内部类(Inner Class)
内部类:不可以有静态数据,静态方法或者又一个静态内部类 内部类的优点:隐藏类的细节,内部类可以声明为私有.内部类可以访问外部类的对象(包括private) 静态内部类:可以有静态数据,静 ...
随机推荐
- OAF_文件系列8_实现OAF处理Excel的JXL包详解
写入/读取Excle,设置打印样式排版,锁定列与行,设置打印标题,给Excle加密. http://www.blogjava.net/xing5156/archive/2011/11/18/36422 ...
- React组件的分类
* 1.statelessComponent 不包含任何state的组件 例如:AntDesign的 :Button,Input组件 * 2.viewComponent 包含少量ui state的组件 ...
- 使用NUget发布自己的dll(转)
一:Nuget控制台有几个常用命令 Get-Package 获取当前项目已经安装的类库 Install-Package 安装指定类库,命令格式如下:Install-Package 类库ID,示例:PM ...
- win7(64位)php5.5-Apache2.4-mysql5.6环境安装
原文链接http://jingyan.baidu.com/article/9faa723152c5d6473d28cb47.html 工具/原料 php-5.5.10-Win32-VC11-x64.z ...
- delphi 一个自动控制机的硅控板检测程序,用多线程和API,没有用控件,少做改动就能用 用485开发
一个自动控制机的硅控板检测程序,用多线程和API,没有用控件,少做改动就能用Unit CommThread; Interface Uses Windows, Classes, SysUtils, G ...
- UILable
//UILable的大小自适应实例 UILabel *myLable = [[UILabel alloc] initWithFrame:CGRectMake(, , , )];//设定位置与大小 [m ...
- jQuery MiniUI开发系列之:使用API文档
jQuery MiniUI在组件设计上,是简约.独立的,没有复杂的继承体系. 比如使用DataGrid,可以在api文档的datagrid部分,查找到datagrid的所有属性.方法.事件,而无需关注 ...
- spring @Scheduled注解执行定时任务
以前框架使用quartz框架执行定时调度问题. 这配置太麻烦.每个调度都需要多加在spring的配置中. 能不能减少配置的量从而提高开发效率. 最近看了看spring的 scheduled的使用注解的 ...
- c#扩展出MapReduce方法
MapReduce方法主体: public static IDictionary<TKey, TResult> MapReduce<TInput, TKey, TValue, TRe ...
- jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法
jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法 在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们 ...