Java基礎日記———Javaの三大特性(下)

26153 ワード

 .  
1.    :
    (1)         。
    (2)           。      ,        。
      :              ,       。 
                      。
     is a。 
    class C
    {
         void demo1(){}
    }
    class A extends C
    {
         void demo2(){}
    }
    class B extends C
    {
         //void demo1(){}
         void demo3(){}
    }
  :  has-a
                     ,                       .
  :       contains-a
                        ,          ,              

Java   :java      ,      。   java      。          
              :             
         ,             。
   java      。              。   。
                ? 
       ,          ,                 。
        ,             。
      ,         ,    ?
                   ,
                     ,           。
         :      ,          。
2.            
(1)  
                      ,
               , this 。
                 , super。

    super    this       。
    this           。
    super           。
(2)  
                    , 
              ,          ,            。 
                 :  (  )
           ,        ,    ,           ,              ,  ,         ,        ,         ,       。 
      :      ,                ,     ,      。(         。) 
      :           。 
      :          。

(3)         。
                ,           ,
                             super();
    super():              。                   super();
                      ?
                    。          ,                     。           ,              。
                   ,        super        。
      :super                 。
      :          ,                 。 
                            super();
                     ,        super                  。 
  :                 this             。 
                            。
3.final   
    final :   。       。
    ①     ,  ,  。
    ② final          。       ,       。
    ③ final           。
    ④ final                ,         ,         。
            ,            ,           ,         。     。
              ,    final  。    :              ,         。
          _  。
    ⑤               ,        final       。
4.   
               ,        ,           。  ,       ,        。
          :
    ①           。
    ②            abstract     。
    ③       new    。           。
    ④             ,                ,        。
                  ,            。
                  。
           ,       ,   ,              。
            ,        ,      。        。
             。 
                  。             ,         。 
      :             ,              。 
  :
    abstract    ,          。
    final: final         。  abstract           。
    private:             ,      ,      。               。 
    static:  static        ,        ,          。
               。

コードの例:
    abstract class Student
    {
         abstract void study1();
         void sleep()
         {
              System.out.println("  ");
         }
    }
    class ChongCiStudent extends Student //    study  
    {
         void study() //  
         {
              System.out.println("chongci study");
         }
    }
    class BaseStudent extends Student //    study  
    {
         void study() //  
         {
               System.out.println("base study");
         }
    }
    class AbstractDemo
    {
         public static void main(String[] args)
         {
               new BaseStudent s = new BaseStudent();
               new ChongCiStudent.study();//    ,      
         }
    }
5.  
      :    ,             
                 ,                。
    class     
    interface       。
     :
              。
            。
          。
             。
               ,                   。
                  。
     ,    : 
    ①       :  ,    。
    ②             。
      :public static final
      :public abstract
      :        public 。
  :         ,       。
           ,                ,        。           。 
             ,              。java     。
    :                               ,                      。   ,                   ,                ,               。     。
 interface People{
           void peopleList();
    }
    class Student implements People{
           public void peopleList(){
            System.out.println("I’m a student.");
        }
}
class Teacher implements People{
          public void peopleList(){
            System.out.println("I’m a teacher.");
        }
}
public class Example{
  public static void main(String args[]){
                        People a;              //      
                        a=new Student();      //   ,            
                        a.peopleList();        //    
                        a=new Teacher();     //   ,            
                        a.peopleList();       //    
            }
}
  :I’m a student;I’m a teacher.
         :
          ,             ,         ,                  ,
      ,                    ,                     ,      ,       ,          ,         。
      ,          ,            ,                 ,      (        , Remote  )     (         )   。
  :
       :           。 
       : 
     1,        ,       。 
               ,       。 
     2,                  ,     ,           。           ,        。 
     3,      , is a  ,             。 
               like a   ,         。 
         :    ,   。 

コードの例:
    interface Inter
    {
    public static final int NUM = 3;
    public abstract void show();
    }
interface InterA
    {
    public abstract void show();
    }
    class Demo
    {
    public void function(){}
    }
    class Test extends Demo implements Inter,InterA
    {
    public void show(){}
    }
    interface A
    {
        void methodA();
    }
    interface B //extends A
    {
    void methodB();
    }
    interface C extends B,A
    {
    void methodC();
    }
class D implements C
    {
    public void methodA(){}
    public void methodC(){}
    public void methodB(){}
    }
    class InterfaceDemo 
    {
    public static void main(String[] args) 
    {
        Test t = new Test();
        System.out.println(t.NUM);
        System.out.println(Test.NUM);
        System.out.println(Inter.NUM);
    }
    }
 .  
1.    
(1)     
                   。
                     。
(2)     
               。    ,    。
            :    。
(3)     
                    。

(4)     :
          ,                   。
(5)     
(6)           :     !!!
     : 
(1)     ,  ,  。 
(2)    。
2.     
(1)     
                          ,                。
  :
         。   eat()  。
 :Animal a = new Cat();//         ,      。
        a.eat();
        Cat c = (Cat) a;//              。    。
        c.catchMouse();
(2)        
         :            (=  )        。   ,    ,        。
         :                 。
          :          ,     ,     。
        ,       :
           ,     (         )。
        ,         :
           ,      。

コードの例:
    class Fu
{
    static int num = 5;
    void method1()
    {
        System.out.println("fu method_1");
    }
    void method2()
    {
        System.out.println("fu method_2");
    }
    static void method4()
    {
        System.out.println("fu method_4");
    }
}
class Zi extends Fu
{
    static int num = 8;
    void method1()
    {
        System.out.println("zi method_1");
    }
    void method3()
    {
        System.out.println("zi method_3");
    }
    static void method4()
    {
        System.out.println("zi method_4");
    }
}
class  DuoTaiDemo4
{
    public static void main(String[] args) 
    {
/*      Fu f = new Zi();
        System.out.println(f.num);
        Zi z = new Zi();
        System.out.println(z.num);
                 //        :5;8
                //       ,     (         )。  
*/
/*******************************************/
//              f.method3();
//                 ,        ,    method3()    。
/*******************************************/
        Fu f = new Zi();
        f.method4();//    :fu.method_4;
        Zi z = new Zi();
        z.method4();//    :zi.method_4
                //        ,             :Fu.method4();
/********************************************/
/*
                //z            ,    Zi              。
            Zi z = new Zi();
        z.method1();
            z.method2();
        z.method3();
*/
    }
}   
(3)    
①    :      ,        。
    :
interface PCI
{
    public void open();
    public void close();
}
class MainBoard
{
    public void run()
    {
        System.out.println("mainboard run ");
    }
    public void usePCI(PCI p)//PCI p = new NetCard()//              。
     。
    {
        if(p!=null)
        {
            p.open();
            p.close();
        }
    }
}
class NetCard implements PCI
{
    public void open()
    {
        System.out.println("netcard open");
    }
    public void close()
    {
        System.out.println("netcard close");
        method();
    }
}
class SoundCard implements PCI
{
    public void open()
    {
        System.out.println("SoundCard open");
    }
    public void close()
    {
        System.out.println("SoundCard close");
    }
}
class DuoTaiDemo5 
{
    public static void main(String[] args) 
    {
        MainBoard mb = new MainBoard();
        mb.run();
        mb.usePCI(null);
        mb.usePCI(new NetCard());
        mb.usePCI(new SoundCard());
    }
}
②  :      。
       :    。
    a.      :JDBC  Hibernate
    b.     :c create r read  u update  d delete
    c.       。
interface UserInfoDao//            。
{
    public void add(User user);
    public void delete(User user);
}
class UserInfoByJDBC implements UserInofDao
{
    public void add(User user)
    {
        1,JDBC     。;
        2,  sql        。;
        3,    。
    }
    public void delete(User user)
    {
        1,JDBC     。;
        2,  sql        。;
        3,    。
    }
}
class UserInfoByHibernate implements UserInfoDao
{
    public void add(User user)
    {
        1,Hibernate     。;
        2,  sql        。;
        3,    。
    }
    public void delete(User user)
    {
        1,Hibernate     。;
        2,  sql        。;
        3,    。
    }
}
class  DBOperate
{
    public static void main(String[] args) 
    {
                //     ,  JDBC  Hibernate     。
        //UserInfoByJDBC ui = new UserInfoByJDBC();
        //UserInfoByHibernate ui = new UserInfoByHibernate();
        UserInfoDao ui = new UserInfoByHibernate();
        ui.add(user);
        ui.delete(user);
    }
}
(4)Object 
    Object:              ,      。
                       。
    Object                   。
                    ,        。
              ,            。     。
           API,    。
(5)   
        :
    a.                ,    。                ,                  ,       .this
    b.         ,         。
    :
    a.                ,     ,         。
           。
  :
        .          =      .     ;
    Outer.Inner in = new Outer().new Inner();
    b.          ,            。
      ,private:             。
    static:      static   。
         static   ,           static  。       。
           ,      static          ?
    new Outer.Inner().function();

           ,      static         ?
    uter.Inner.function();
  :            ,       static 。
                      ,       static 。

          ,         ,          。
                    。
   class Body
    {
        private class XinZang
        {
}
        public void show()
        {
            new XinZang().
        }
    }
         :
    a.           
    b.             ,            。                 。     final       。
    c.         private   。

コードの例:
class Outer
{
    private static  int x = 3;
    static class Inner//     
    {
        static void function()
        {
            System.out.println("innner :"+x);
        }
    }
    static class Inner2
    {
        void show()
        {
            System.out.println("inner2 show");
        }
    }
    public static void method()
    {
        //Inner.function();
        new Inner2().show();
    }
}
class  InnerClassDemo
{
    public static void main(String[] args) 
    {
         Outer.method();
        //Outer.Inner.function();
        //new Outer.Inner().function();
        //           。
//      Outer.Inner in = new Outer().new Inner();
//      in.function();
    }
}
(6)     :
     ①                 。
    ②          :
                     。
    ③        :  new       (){       }
    ④                 。         。              。
    ⑤                 3 。

コードの例:
    abstract class AbsDemo
    {
        abstract void show();
    }
    class Outer
    {
        int x = 3;
        public void function()
        {
        AbsDemo d = new AbsDemo()
//         。
        {
            int num = 9;
            void show()
            {
                System.out.println("num==="+num);
            }
            void abc()
            {
                System.out.println("haha");
            }
        };
        d.show();
        //d.abc();//    ;
    }
}
class InnerClassDemo4 
{
    public static void main(String[] args) 
    {
        new Outer().function();
    }
}