黑马程序员技术交流社区

标题: 黑马程序员----类的功能扩展-----接口 [打印本页]

作者: 毕延平    时间: 2015-3-8 23:02
标题: 黑马程序员----类的功能扩展-----接口
http://bbs.itheima.com/thread-3077-1-1.html
Android 培训-----我的java笔记,期待与您的交流;
(一)接口
1、接口概述:
1.当一个类中,包含都是抽象方法时,可以将此类声明为"接口"
2.使用关键字:interface.
3.接口同抽象类一样不能被实例化;
4.一个类实现接口使用关键字:implements
interface  IA
{
        abstract void add();
        abstract void delete();
        abstract void update();
        abstract void find();
}
abstract class B implements IA
{
        //实现一部分方法,那么此类必须是一个抽象类
        public void add(){
        }
}
class C extends B
{
        public void delete(){
        }
        public void update(){
        }
        public void find(){
        }
}
class D implements IA
{
        public void add(){
        }
        public void delete(){
        }
        public void update(){
        }
        public void find(){
        }
}
class Demo
{
        public static void main(String[] args)
        {
                System.out.println("Hello World!");
        }
}
[size=10.5000pt]2、接口的属性
1.成员变量:
                1).接口中的成员变量必须声明为"常量",必须是公有的.public static final
                2).接口中的成员变量可以不使用关键字public final。如果不使用,系统会自动添加
        2.构造方法:
                接口中没有构造方法;
        3.成员方法:
                1).接口中只能包含抽象方法;
                2).接口中的抽象方法被隐式的声明为:public abstract。如果不加关键字,系统会自动添加
3、接口的作用:
        1.接口就是用来被实现的;
        2.一个类可以同时实现多个接口;语法:class 类名 implements IA,IB
        3.一个类可以同时继承自一个类或抽象类,并且同时实现多个接口;
          一定要先继承,后实现;
          语法:class 类名  extends 父类  implements 接口1,接口2
        4.接口的作用:
          1).Java中的继承只能单继承,不能同时继承自多个类,此时如果想扩充方法,
             可以同过接口实现;
          2).例子:
                 项目经理1
                 1.规定了一个抽象类,要求大家继承:
                        abstract class AbstracA{
                                void add();
                                void update();
                        }
                 2.我们程序员:继承自这个类
                        class A extends AbstracA{
                                void add(){
                                }
                                void update(){
                                }
                        }
                 项目经理2
                 1.规定了一个抽象类,要求大家继承:
                        abstract class AbstractB{
                                void delete();
                                void find();
                        }
                 2.我们程序员:继承自这个类:由于此时我们已经继承了一个类,所以无法再继承另一个类。
                        class A extends AbstractA
                 3.项目经理2将抽象类改为接口:
                        interface IB{
                                void delete();
                                void find();
               
4、多态:
        1.继承的多态:      父类类型 变量名 = new 子类类型();
        2.抽象类的多态:        抽象类父类类型 变量名 = new 子类类型();
        3.接口的多态:      接口的类型   变量名 = new 子类类型();
        最长用的是:接口多态;
class C
{
}
class D extends AbstractA
{
        public void show(){
        }
        void fun(){
        }
}
class Demo
{
        public static void main(String[] args)
        {
                IA a = new B();
                a.show();
        //        a.method();//不可以,编译错误,父接口中没有定义method方法
                //向下转型
                B b = (B)a;
                b.method();
                //由于C不是IA的实现类,所以下面代码不可以
        //        IA a2 = new C();
                IA a3 = new D();
                AbstractA a4 = new D();
        }
}
接口的继承:
1.一个接口可以同时"继承"自一个或多个接口,使用继承:extends类:一个类可以继承自一个类或者继承自一个抽象类(单继承),并且可以同时实现多个接口;
        抽象类:一个抽象类可以继承自一个抽象类(单继承),并且可以实现多个接口;
        接口:一个接口可以继承自一个,或多个接口(多继承);
interface IA
{
        void show();
}
interface IB
{
        void show();
        void fun();
}
interface IC extends IA,IB//接口继承自接口时,允许多继承。
{
}
class ClassA implements IC
{
        public void show(){
        }
        public void fun(){
        }
}
class Demo
{
        public static void main(String[] args)
        {
                System.out.println("Hello World!");
        }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2