黑马程序员——JAVA接口和内部类

原创 2015年07月08日 16:57:46

   ——- android培训java培训、期待与您交流! ———-


接口定义

  • 格式

interface()

  • 接口的成员修饰符固定

    • 成员常量:public static final

    • 成员方法:public abstract


接口用“多实现”实现“多继承”。接口不可以创建对象,需要被子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以实例化。方法修饰符必须为public


public interface Interface1 {

    int a=1;

    void show();



}

//上面的等于下面的,编译自动加上修饰符

public interface Interface1 {

    public static final int a=1;

    abstract void show();



}



public class Test implements Interface1 {

    public static void main(String []args){

        Test t=new Test();

        System.out.println(t.NUM);

        System.out.println(Test.NUM);

        System.out.println(Interface1.NUM);



    }



    @Override

    public void show() {

        System.out.println("TEST");

    }

}





接口之间的继承


interface A{

    abstract void showA();



}

//接口与接口之间支持多继承

interface B extends A,C{

    abstract void showB();



}



接口特点

  1. 接口是对外暴露的规则。

  2. 接口是程序的功能扩展。

  3. 接口可以用来多实现。

  4. 类与接口之间是实现关系。

  5. 接口与接口之间可以有继承关系。


Object类

所有对象的父类。

equals()

对象的比较。


equals(Object obj)
toString()

类名@hashcode()

Class类描述class文件


        Test t = new Test();

        Class c =t.getClass();//对象对应class文件

        System.out.println(c.getName());

        getClass.getName()+"@"+Integer.toHexString(hashCode())


内部类

内部类访问规则

作用:内部类可以方便访问外部类成员,包括私有。外部类访问内部类,需要建立内部类对象。之所以可以直接访问外部类的成员,因为直接持有外部类引用,格式:Outer.this

访问格式:

  • 当内部类定义在外部类成员位置上,而非私有,可以在外部其他类忠,直接建立内部类对象

格式:

外部类名.内部类名 变量名= 外部类对象.内部类对象;

Outer.Inner i = new Outer().new Inner();

  • 当内部类定义在外部类成员位置上,就可以被成员修饰符修饰。比如:private ,内部类在外部类中封装。

static ,内部类具有static特性。当内部类被static修饰后,只能访问外部类的静态成员。出现访问局限。

new Outer.Inner().function()(直接访问内部类的非静态成员)

Outer.Inner.function()(直接访问内部类的静态成员)

注意:当内部类定义了静态成员,内部类必须时静态的。当外部类的静态方法访问内部类时,内部类必须是静态的。


/**

 * Created by root on 15-6-14.

 */

public class Outer {

    int x;

    class Inner{

    int x;

        void function(){

        this.x;

        Outer.this.x;//外部类的变量

        }



    }

    void method(){

        Inner inner=new Inner();

        inner.function();

    }



    public static void main(String[]agrgs){

        //内部类全名

        Outer.Inner i = new Outer().new Inner();



    }

}


内部类定义规则

什么时候使用内部类?

当描述事物时,事物中含有事物,该事物使用内部类描述。因为该事物使用外部事物。


public class Outer {



    private class Inner{//封装内部类

        void function(){}

    }

    void method(){

        new Inner().function();



    }
匿名内部类

内部类定义在局部时,不能被成员修饰符访问。可以访问外部类的成员,因为持有外部类的引用。但是不可访问它所在局部的变量。只能访问被final修饰的成员变量。


public class Outer {





    void method(final int x){

         class Inner{

            void function(){

                System.out.println(x);

            }

        }

        new Inner().function();



    }



    public static void main(String[]agrgs){

        //

        Outer i = new Outer();

        i.method(1);

        i.method(2);



    }

}


定义匿名内部类前提,内部类必须继承一个类,或者实现接口。

格式:new 父类或接口 {定义子类的内容}

其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。可以理解为带内容的对象。

匿名内部类中定义方法最好不要超过3个。


public class Outer {

    int x;



    void method(){

//

        new AbsDemo(){



            @Override

            void show(int x) {

                System.out.print("x="+x);

            }

        }.show(x);

    }



    public static void main(String []args){

        Outer o= new Outer();

        o.x=1;

        o.method();

    }



}



abstract class AbsDemo{

    abstract void  show(int x);

}



//练习

public class Outer {

    public static Inner function(){

        return new Inner() {

            @Override

            public void method() {

                System.out.print("返回匿名内部类");

            }

        };

    }

    public static void main(String[]args){

    //function()运算后是一个对象,而且是一个Inner类对象。所以才调用method()方法

        Outer.function().method();





    }

}



interface Inner{

    void method();

}

匿名内部类作为方法的参数


    public static void show(Inner inner){

    //

    }

        Outer.show(new Inner() {



            @Override

            public void method() {



            }

        });


匿名内部类父类为Object


new Object(){

            public void method(){}

        }.method();

java中接口有什么作用?

接口的作用就是把使用接口的人和实现接口的人分开,实现接口的人不必要关心谁去使用,而使用接口的人也不用关心谁实现的接口,由接口将他们联系在一起。以上像一段绕口令,那么通过下面的几段程序解释: ...
  • rongwenbin
  • rongwenbin
  • 2014年10月20日 17:00
  • 816

java中接口的作用是什么?

我想,可能不止我一个人有这个疑问,所以,把它贴出来。     下面是madai和clkrst给我的回答。     在此谢谢两位。     我的问题是:   ...
  • kongjiea
  • kongjiea
  • 2015年11月19日 11:47
  • 2680

Java中接口的清晰+形象理解

大家都知道,在Java应用开发中,要“面向接口编程”,那么,对于接口的清晰理解尤为重要,尤其是对设计模式的学习。 在网上搜索了很多关于接口的定义,但是认识接口,还得从多个方面去理解,尤其是对接口的形象...
  • ltx06
  • ltx06
  • 2015年10月04日 19:45
  • 947

Java里的接口的interface 简单介绍.

这是写给我自己和我这种初学者看的. Java作为1个强面向对象语言,  基本上所有东西(成员和方法)都是写在class(类)里面的. 但是也存在一种与class平行的东西, 它就是interfac...
  • nvd11
  • nvd11
  • 2014年02月07日 20:11
  • 8340

java调用http接口

最近几天因为项目需求,做一个门禁管理。而门禁信息来源则是妙兜。所以我们这边需要调用妙兜的接口,主要是“设备安装登记接口”和“钥匙凭证发放接口”。 因为之前没有做过“java调用http接口”类似功能,...
  • woshizhangliang999
  • woshizhangliang999
  • 2015年08月13日 10:21
  • 17499

Java接口特征与细节

接口 书面定义: Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 在j...
  • u012768347
  • u012768347
  • 2016年04月02日 23:50
  • 922

Java接口修饰符详解-可以修饰接口的修饰符

Java接口修饰符详解 可以修饰接口的修饰符有(C D) A private   B protected   C  final    D abstract 接口就是提供一种统一的”...
  • u014304688
  • u014304688
  • 2017年05月05日 15:12
  • 12743

Java接口 详解(一)

一、基本概念接口(Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合。接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。如果一个类只由抽象...
  • wei_zhi
  • wei_zhi
  • 2016年10月06日 00:46
  • 20758

Java程序API数据接口

API:应用程序接口(API:Application Program Interface) 使用数据接口的作用 1、封装逻辑 数据接口从数据库查询出数据,并组织成json格式,这个逻辑如果在每个终端...
  • cheng_feng_xiao_zhan
  • cheng_feng_xiao_zhan
  • 2016年08月21日 16:51
  • 4269

Java后台接口开发初步实战

上图是查询列表的接口,get方式上图是用户注册的接口,同样是get,post方式也很简单开发工具:IntelliJ IDEA 2016.3.5 ORM框架:MyBatis 数据库:MySql 服...
  • diyangxia
  • diyangxia
  • 2017年03月23日 19:55
  • 11147
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员——JAVA接口和内部类
举报原因:
原因补充:

(最多只允许输入30个字)