黑马程序员——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笔记——接口与内部类

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ---------------------- 接口与内部类 一、接口 ...

黑马程序员——java基础(面向对象)抽象、接口、内部类

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 第五章:面向对象(抽象、接口、内部类)   本章概述: 第一部分:抽象  抽象描述 抽...

黑马程序员——Java面向对象之抽象类 接口 内部类笔记

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 三, 抽象类概述: 在Java中,一个没有方法体的方法应该定义为抽象方法, 而类中如果...

黑马程序员Java笔记——抽象类、接口、内部类(拾遗补录)

----------- android培训、java培训、java学习型技术博客、期待与您交流! --------- 拾遗补录: 面向对象与面向过程: (1)面向对象与面向过程的区别,以及有哪些编程...

java基础--抽象类、接口、多态、内部类、异常、包

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 1、抽象类(abstract)    特点: 1)抽象方法一定在抽象类中; 2)抽象方法和...

黑马程序员——面向对象(抽象类、接口、内部类)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------   面向对象(二) 一、抽象类 1.1 定义:用abstract修饰的类称为抽象类; 1.2 意...

黑马程序员——子父类、抽象类、接口、内部类

-----------android培训、java培训、java学习型技术博客、期待与您交流! ------------ 子父类中的函数 当子类出现和父类一模一样的函数时,当子类对象调用该函数...

黑马程序员——继承、多态、内部类和接口

---------------------- android培训、java培训、期待与您交流! ----------------------  一丶继承 1、让类与类之间产生了关系...

黑马程序员——4.继承(接口、多态、内部类、异常、包)

Java继承(接口、多态、内部类、异常、包)

黑马程序员-Java面向对象II(抽象类、接口、参数传递修饰符和内部类问题)

Java面向对象II(抽象类、接口及参数传递问题)
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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