接口、内部类、枚举
【摘要】
接口、内部类、枚举
模式: 模板模式: 简单工厂模式: 适配器模式: 接口: 一种规范,一种标准 interface 接口名 {} 接口里的成员: 1. 全局变量 : 这里定义的变量,默认是使用 public static final 修饰的 2. 公共的抽象方法 : 默认使用 abstr...
接口、内部类、枚举
-
模式:
-
模板模式:
-
简单工厂模式:
-
适配器模式:
-
-
-
接口: 一种规范,一种标准
-
-
-
interface 接口名 {}
-
-
接口里的成员:
-
1. 全局变量 : 这里定义的变量,默认是使用 public static final 修饰的
-
2. 公共的抽象方法 : 默认使用 abstract public 修饰的
-
3. 内部类
-
-
特点:
-
没有构造方法,不能实例化
-
-
接口和接口之间可以多继承, 接口里全是抽象方法,不能有普通方法
-
-
-
interface IA{
-
void a();
-
}
-
interface IB{
-
void b();
-
}
-
interface IC extends IA,IB
-
{
-
//可以把父接口里的方法继承过来
-
}
-
-
使用接口:
-
-
class XXX extends Object implements IC,ID{
-
-
//必须全部覆写接口里的方法;
-
//覆写的时候,要注意覆写规则:("一同两小一大")
-
//修饰符只能用public
-
-
//class XXX implements IC,ID 关系
-
-
//实现关系, 也可以说是 继承关系
-
-
-
public void show(){}
-
-
}
-
-
IC c = new XXX();//多态
-
c.show();//编译出错,因为在编译器在IC里找不到show方法
-
-
c.a();
-
-
-
-
内部类:
-
外部类: 宿主类
-
内部类: 嵌套类
-
-
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方法
-
-
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对象;
文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。
原文链接:brucelong.blog.csdn.net/article/details/81630749
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)