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

来源:互联网 发布:qq好友定位软件 编辑:程序博客网 时间:2024/06/05 10:10

-----------android培训java培训、java学习型技术博客、期待与您交流!------------

一、接口

          接口也是一种抽象类,接口是程序的功能的扩展,它降低了耦合性,更重要的是可以用来多实现,就是说一个子类可以实现多个接口。

          抽象类是继承,是 "is a "关系。
          接口是实现,是 ""like a关系。

          抽象类中可以定义非抽象方法,供子类直接使用。
          接口的方法都是抽象,接口中的成员都有固定修饰符。

二、内部类

          一个类中还可以定义一个类,这个类中类就是内部类。

 要实例化一个内普通类之前必须先实例化外部类对象。

         

     内部类定义原则:          当描述事物中,事物的内部还有事物,该事物用内部类来描述。          因为内部事务在使用外部事物中的内容。

         静态内部类

        一个内部类属于一个外部类的成员,也可以被private static修饰;

 如果一个内部类被修饰为private,这个内部类只能在外部类的内部使用;  

         如果一个内部类被修饰为static,实例化此内部类的时候不需要先实例化外部类;   

         静态的内部类只能访问静态的外部类成员;  

         如果一个一个内部类包含了静态成员,那么这个内部类必须是静态的;

          局部内部类

  /*
           局部内部类:


          1.在一个方法体内,可以定义一个类,叫:局部内部类;
          */
                   interface IA
                    {
                   void show();
                     }
                     class Outside
                     {
              public IA fun(){


       final int num = 10;
       class Inside implements IA{
public void show(){
System.out.println("B --> show() num = " + num);
}
}
Inside inner = new Inside();
return inner;

//匿名内部类,实现IA接口的子类没有名字

                   /* IA aObj = new IA(){//相当于定义一个内部类实现IA接口,并且重写接口中的方法,而且同时实例化了一个这个子类对象
          public void show(){
              System.out.println("B --> show() ");
              }
          };
         return aObj;
           */
           /*return new IA(){
                 public void show(){
                System.out.println("B --> show() ");
                             }
                                     };
             */
             }

                }
                         class Demo 
                          {
                               public static void main(String[] args) 
                                  {
                                        //Outside outer = new Outside();
                                             //outer.fun();


                              Outside a = new Outside();
                                         //Object obj = a.fun();
                                            IA obj = a.fun();
                                                       obj.show()


                 }
                }

  在一个方法体内,可以定义一个类,叫:局部内部类;

           局部内部类的不可以为静态类;

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

          面向对象可以说基本讲完,但是总感觉自己写代码时就错误百出。可能是自己练得不多吧!不过幸好听的比较认真,所以说压力不大。。。

-----------android培训java培训、java学习型技术博客、期待与您交流!------------

0 0