抽象类:含有抽象方法的类
接口:只含有全局变量和抽象方法作为一种行为
内部类:在一个类的内部在定义另外一个类,另外一个类就是内部类
package com.xatu.接口;
public class Outer {
public class Inner{
//public static int num = 200;//不允许
//public static void method() {
//}
}
public void test() {
//需要创建对象
Inner in = new Inner();
in.内部类的成员;
}
class Other{
public void test() {
//先要创建对象
Outer O = new Outer();
//使用外部类对象的.new操作
Outer.Inner in = new Outer.Inner();
}
}
}
内部类:没有被static修饰的内部类,内部类通常用来作为一些扩展类,作为事件监听器
嵌套类:被static修饰的内部类
package com.xatu.接口;
public class Outer {
public static class Inner{
public static int num = 200;
private int id = 0;
}
public void test() {
//访问嵌套类的静态成员,不需要创建对象
Inner.num=200;
//访问嵌套类的非静态成员,需要创建对象
Inner in = new Inner();
in.id=0;
}
class Other{
public void test() {
//访问嵌套类的静态成员,不需要创建对象
Outer.Inner.num=200;
//访问嵌套类的非静态成员,需要创建对象
Outer.Inner in = new Outer.Inner();
in.id=0;
}
}
}
匿名内部类:只要语句能执行的地方
new 匿名内部类的父类或父接口名() {
类体;
属性、方法、父类的抽象方法的实现
}本态成员名;
父类引用 = new 匿名内部类的父类或父接口名() {
类体;
属性、方法、父类的抽象方法的实现
};
父类引用.多态成员名;
适用于父类或接口中有少量方法,而只需要调用其中一个,并且是一次性调用
枚举:
public enum 枚举名{
常量对象1,常量对象2,常量对象3
}
main(){
枚举名 引用 = 枚举名.常量对象名;
if (引用 == 枚举名.常量对象2) {//可以使用双等是同一个对象
}
switch (引用) {
case 常量对象1:
break;
default:
break;
}
}