抽象类( abstract )
-
继承了抽象类的子类,都必须要实现它的方法,除非子类也是抽象类 。
-
抽象方法,只有方法名字,没有方法实现。
-
抽象类中可以写普通方法,抽象方法只能在抽象类中。
//抽象类 public abstract class Action{ //约束,抽象方法,只有方法名字,没有方法实现 public abstract void doSomething(); }
接口( interface )
-
约束
-
定义一些方法,让不同的人实现
-
public abstract
-
public static final
-
接口不能被实例化,接口中没又构造方法
-
implements可以实现多个接口
-
实现接口必须要重写接口中的方法
public interface UserService{ //接口中的所有定义都是抽象的 void add(String name); void delete(String name); void update(String name); void query(String name); } public interface TimeService{ void timer(); } //类实现接口,重写接口中的方法 public class UserServiceImpl implements UserService,TimeService { @Verride public void add(String name){ } @Verride public void delete(String name){ } @Verride public void update(String name){ } @Verride public void query(String name){ } @Verride public void timer(){ } }
内部类
-
成员内部类
-
静态内部类
-
局部内部类
-
匿名内部类
//成员内部类 public class Outer{ private int id = 10; public void out(){ System.out.println("这是外部类!"); } class Inner{ public void in(){ System.out.println("这是内部类!"); } public void getID(){ System.out.println(id); } } } public class Application{ public static void main(String[] args){ Outer outer = new Outer(); //通过外部类来实例化内部类 Outer.Inner inner = outer.new Inner(); inner.in(); //内部类可以获得外部内的私有熟悉、方法 inner.getID(); } }
//静态内部类 public class Outer{ private int id = 10; public void out(){ System.out.println("这是外部类!"); } class Inner{ public static void in(){ System.out.println("这是内部类!"); } } }
//局部内部类 public class Outer{ public void method(){ class Inner{ puhlic void in(){} } } }
//匿名内部类 public class Test(){ public static void main(String[] args){ //不用将实例保存在变量中 new Apple.eat(); } } class Apple{ public void eat(){ System.out.println("吃!"); } }