A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© xiaoya0o0o 中级黑马   /  2015-9-17 21:56  /  190 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

抽象类:
                1.使用abstract关键字修饰;可以修饰“类”,可以修饰“成员方法”;
                        abstract class A{
                                abstract void show();
                        }
                2.“抽象类”的特点:
                        1).不能被实例化,只能用于被继承;
                        2).可以包含:成员变量、构造方法、成员方法、抽象方法;
                        3).可以不包含抽象方法;
                3.“抽象方法”的特点:
                        1).没有方法体;abstract void show();
                        2).必须被子类重写。除非子类也是个抽象类;
                3.子类继承抽象类使用关键字:extends,仍然是单继承;
                4.一个子类继承 了一个抽象类,必须实现抽象类中所有的抽象方法;
                  否则子类也必须是抽象的。
                        例如:
                                abstract class A{
                                        abstract void show();
                                }
                                class B extends A{  }        //编译错误。类B不是抽象的,继承类抽象类必须重写抽象类中的所有抽象方法。
                                abstract class B extends A{  }        //编译通过。类B没有重写父类中的抽象方法,但类B是抽象的。
                5.abstract关键字不能和哪些关键字共存:
                        1.private:抽象方法就是用来被子类重写的,而私有方法不能被子类重写;
                        2.final:抽象类和抽象方法就是用来被子类继承和重写的,而fianl类和final方法不能
                                 被继承和重写;
                        3.static:static修饰的方法在没有任何对象的情况下就会被分配内存空间;而抽象方法
                                  没有方法体,无法分配空间;
        接口:
                1.使用interface关键字定义:只能修饰“类”:
                        interface IA{
                        }
                2.“接口”的特点:
                        1).不能被实例化,没有构造方法,只能用于子类“实现”;
                        2).可以包含:
                                A.成员变量(常量):隐式的定义为:public static final。
                                                      上述三个关键字中任何一个都可以不写,系统会自动添加;
                                                例如:
                                                interface IA{
                                                        public int num1 = 10;                //OK
                                                        static final int num2 = 20;        //OK
                                                        final int num3 = 30;                //OK
                                                        public final num4 = 40;                //OK
                                                        int num5 = 50;                        //OK
                                                }
                                B.抽象方法:隐式的定义为:public abstract。可以省略,系统会自动添加
                                                例如:
                                                interface IA{
                                                        void show1();                //OK
                                                        public void show2();        //OK;
                                                        abstract void show3();        //OK;
                                                }
                        3).接口的功能是:扩展功能;
                3.子类实现接口使用关键字:implements
                4.一个子类可以同时实现多个接口;
                        interface IA{}
                        interface IB{}
                        class C implements IA,IB{        //OK的。
                        }
                5.子类实现接口时,必须重写接口中所有的抽象方法,而且必须是public的--因为
                           接口中抽象方法的定义隐式的是public的。
                                例如:
                                        interface IA{
                                                void show();
                                        }
                                        class B implements IA{
                                                void show(){  }       //编译错误。父接口的show()隐式的为public的,子类重写时必须是public的;
                                        }
                               
                5.接口编译后一样会生成.class文件。



抽象类和接口的区别:
                1.成员区别
                        1).抽象类 变量,常量;有抽象方法;抽象方法,非抽象方法
                        2).接口 常量;抽象方法
                2.关系区别
                        1).类与类 继承,单继承
                        2).类与接口 实现,单实现,多实现
                        3).接口与接口 继承,单继承,多继承
                3.设计理念区别
                        1).抽象类 被继承体现的是:”is a”的关系。共性功能
                        2).接口 被实现体现的是:”like a”的关系。扩展功能

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马