面向对象之五

一、枚举(枚举比普通类里面多一个对象成员)

1、语法格式

enum 枚举名{

对象1,对象2,。。。;

字段;

方法;

私有化的构造方法;

内部类;

}

代码实例:

enum Sex{

WAN(“男”),WOMAN(“女”),RENYO(人妖“”);

private String name =name;

Private Sex(String name){   

this.name = name;

}

public String toString(){

return name;

}

}

2、注意事项

枚举继承自Enum,但是Object才是最终父类;枚举只能隐式继承自Enum,不能显示继承自任一个枚举和类,否则报错。

枚举的构造方法只能被private修饰符修饰,如果你看到构造方法没有修饰符修饰,其实底层还是用的private修饰符修饰

3、枚举写的单例模式

enum sex{

instance;

}     这是最简单的单例模式

二、抽象类

1、语法格式

abstract class 类名{

和普通类的成员一样,只是多了一个抽象方法

}

抽象方法的语法格式:abstract void show();   抽象方法是没有主体的

抽象类里面的构造方法是不能实例化的

2、注意事项

类与类之间是单继承关系

抽象类继承了抽象类,可以不实现父类中的抽象方法,因为抽象类中是可以存在抽象方法的

普通类继承了抽象类,必须要覆写父类中的抽象方法、

抽象方法只能存在抽象类中

三、接口

1、语法格式

interface 接口名{

全局常量    在接口中定义的变量都是全局常量  都是public static final修饰的

抽象方法    都是public abstract修饰的 覆写的时候注意权限修饰符等级!!!

}

注意:接口中是没有普通方法、构造方法等,只能有全局常量、抽象方法。

普通类只要继承了抽象类或者实现了接口都必须覆写抽象方法,因为抽象方法不可能在普通类里存在,只能在接口、抽象类里存在。

接口与接口之间是多继承,类与类之间是单继承,类与接口之间是多实现。

一个普通类既要继承父类也要实现多个接口语法格式怎么做呢?

class A extends B implements C,D{

  普通类,覆盖抽象方法即可

}

四、匿名内部类

class TestAnonymousInnerClass7{

public static void main(String[] args){

new C().a.jump();

}

}

/**

匿名内部类:没有名字的内部类。好处就是可以少写代码,非常流行的表达形式

匿名内部类一般应运用于接口和抽象类,由于抽象类和接口都不能实例化,因此在使用匿名内部类时,那个实例其实匿名函数的实例。

*/

interface Animal{

void jump();

}

//

class C{

Animal a = new Animal(){/*

Animal a = new Animal()这一坨就相当于声明了一个类名,这个实力不是接口A的实例,而是这个匿名类的实例。

*/

public void jump(){

System.out.println("这些动物在跳");

}

};

}

猜你喜欢

转载自www.cnblogs.com/limengkun/p/10629711.html