抽象类和接口

抽象类:

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();

输出:

 

posted @ 2018-04-02 13:49  一字节  阅读(194)  评论(0编辑  收藏  举报