抽象类和接口
抽象类:
1、抽象类的方法可以不包含抽象方法,抽象方法所在的类一定是抽象类
2、抽象类的抽象方法只定义,不实现,由继承他的子类来实现,如果子类也是抽象类,则可以也不实现,反之子类必须实现父类的抽象方法
3、抽象方法不能是private,不然子类没办法访问的
4、抽象类记得不能实例化对象来访问
1 public abstract class AbsDemo{ 2 public abstract void AbsDemo1(); 3 } 4 public class AbsDemoZL extends AbsDemo{ 5 public void AbsDemo1(){ 6 System.out.println("111"); 7 } 8 }
接口:
1、接口没有构造函数
2、接口中的变量会被隐式地指定为public static final变量
3、按道理是这样:接口中的方法会被隐式地指定为public abstract方法且只能是public abstract方法(得手动在方法前边加defaulet关键字),其他的会报错,但是我试了在接口声明static方法,并且实现,并没有报错,不知道为什么(最好接口里面只定义,不要写实现之类的)
1 public interface InterDemo 2 { 3 public abstract void InterFunc(); 4 public static void InterDemo() 5 { 6 System.out.println("InterDemo1"); 7 } 8 } 9 public static abstract class InterDemoZL implements InterDemo 10 { 11 12 } 13 public static class InterDemoZZL extends InterDemoZL 14 { 15 public void InterFunc(){ 16 System.out.println("InterDemo"); 17 } 18 public static void Prin(){ 19 System.out.println("Prin"); 20 } 21 }
Main函数
1 InterDemoZZL zl = new InterDemoZZL(); 2 zl.InterFunc(); 3 InterDemoZZL.Prin();
4、一个类可以继承多个接口
1 public interface InterDemo 2 { 3 public abstract void InterFunc(); 4 public default void InterDemo() //default关键字代表类型是public abstract 5 { 6 System.out.println("InterDemo1"); 7 } 8 } 9 public interface InterDemo2 10 { 11 public default void InterDemo2() 12 { 13 System.out.println("InterDemo2"); 14 } 15 } 16 public static abstract class InterDemoZL implements InterDemo 17 { 18 19 } 20 public static class InterDemoZZL extends InterDemoZL implements InterDemo2,InterDemo 21 { 22 public void InterFunc(){ 23 System.out.println("InterDemo"); 24 } 25 }
Main函数:
1 InterDemo zl = new InterDemoZZL(); 2 zl.InterDemo(); 3 InterDemoZZL zzl = new InterDemoZZL(); 4 zzl.InterFunc(); 5 InterDemo2 zl2 = new InterDemoZZL(); 6 zl2.InterDemo2();
输出: