<一> 类的性质与用法 

              



              类分为三类:普通类、抽象类、接口。类一般包含两个部分:属性和方法(函数)。 

             普通类    例如: 



             public class Teacher {                         //类都有一个父类Object 

                       //属性 

                    private int age; 

                    private String sex; 

                    private int height; 

           

                     //构造函数 

                    public Teacher(int a, int h,String s) {            //构造函数的返回值类型是对象的在内存中的地址 

                         
this.age=a;                                      //新建一个构造函数后,默认的构造函数被覆盖(不存在了,被java垃圾处理机制自动清除了) 

     
                       this.height=h; 

       
                        this.sex=s; 

                    } 

   

                     //普通函数 

                    public void play(){ 

            System.out.println("正在玩......."); 

       } 

             } 

            抽象类   例如 



             public  abstract class  People              //抽象类的方法中至少有一个是抽象函数 

             { 

                    public  abstract   void   play(){}    

              } 

              接口类    例如 

              

              interface  Tools                                   //接口类的方法全部是抽象函数,且没有方法体,没有构造函数 

             { 

                    public abstract   void  cut(); 

                    public abstract    void drive(); 

              } 



             类的函数有两种: 

                    构造函数:     public  类名(参数类型    参数....)         

                                        { 

                                                     ... 

                                        } 

                                       //构造函数是类创建对象和输入参数的接口,可以对属性进行初始化 

                                       //普通类、抽象类有默认的构造函数,接口类没有 

                                       //工作机制如下: 

                                            public static void main(String []args)  { 

                                                     Teacher t=new Teacher();     (1) 

                                                      或者 

                                                     Teacher t;                             (2) 

                                                     t=new Teacher();                   (3) 

                                                     //  (1)与(2)等价。 

                                                    // (2)-> 在栈空间里占一个空间,命名为:t 

                                                    //  new  Teacher():在堆空间里占一个空间,内容为Teacher类中的属性和函数 

                                                    //  (3)将刚刚占据的堆空间地址给栈空间,t记载的就是该对象在堆空间的地址       

                                            } 

                                     // 



                    普通函数:     public  返回值类型    函数名(参数类型   参数....) 

                                         { 

                                                     ... 

                                        } 

            在同一个类中,有一些特例: 

                     如:函数的重载。重载就是一个类中有若干函数名相同的函数: 

                                        同:权限说明符、返回值类型、、函数名 

                                        异:参数类型、参数的个数、顺序    (方法体没有要求) 



           在不同的类之间,它们的关系有:泛化关系(继承)、依赖关系、关联关系、实现关系(接口与实现类)。 

                     》 泛化关系发生在子类与父类之间。子类在继承了父类后,会拥有父类的属性和方法(除了父类的构造函数不继承)。 

                         子类可以有另外的属性和方法。 

                          例如: 



                                public static void main(String []args) { 

                                          Teacher t1=new Teacher(32,175,“男”); 

                                          Teacher t2=new Teacher(28,165,“女”); 

                                           

                                          t1.eat(); 

                                          t2.eat(); 

                                         

                                } 

                                public  abstract class  People             

                                { 

                                          public void   eat()   { 

                                                  System.out.prinln("吃饭"); 

                                          } 

                                          public  abstract   void   play(){}    

                                } 

                                 

                                public class Teacher  extends People{ 

                    

                                         private int age; 

                                         private String sex; 

                                         private int height; 

                       

                    

                                        public Teacher(int a, int h,String s) { 

                         
                 this.age=a; 

     
                                         this.height=h; 

       
                                          this.sex=s; 

                                         } 

                                          

                                         public void   eat()   { 

                                                  super.eat(); 

                                                  System.out.prinln("面包,牛奶,油条....."); 

                                          } 



                                         public void play(){ 

                              System.out.println("正在玩......."); 

                             } 

                                 } 

                                 

                         此外, 存在继承关系的类之间,可能存在方法的重写。 重写就是子类在继承父类后,会重写方法体。 

                         其它什么都不改变。如上面的Teacher类中的eat()方法重写了People类中的eat() 



                     》 实现关系发生在接口与实现类之间。接口相当于公司的领导,只负责发布命令;实现类相当于 

                         员工,负责完成领导的交代的任务。接口约束实现类的行为。 

                           public static void  main (String [] args) { 

                                      Knife k=new Knife(); 

                                      Car c=new Car(); 



                                      k.cut(); 

                                      c.drive(); 

                           }      

                        

                            interface  Tools                                   

                           { 

                                       public abstract  void  cut(); 

                                       public abstract   void  drive(); 

                           }   



                           class knife implement Tools{ 

                                       public void  cut(){ 

                                               System.out.println("刀具可以切东西"); 

                                       } 

                                       public void  drive(){ 



                                       } 

                          }  



                          class  Car implements    Tools { 

                                       public void  cut(){ 

                                                

                                       } 

                                       public void  drive(){ 

                                               System.out.println("汽车可以代步"); 

                                       } 

                          }    



                     》多态:多个同一个类型的对象,执行同一个方法,过程不一样就是多态性。 

                              诱发机制:方法的重写、函数的重载、对象类型的强制转换