java:类的基本性质与用法

本文介绍了面向对象编程的基本概念,包括类的定义、属性与方法、构造函数的作用及使用方式,并探讨了类之间的泛化关系、实现关系以及多态性的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                        <一> 类的性质与用法
            


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


            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("汽车可以代步");
                                      }
                         }   


                    》多态:多个同一个类型的对象,执行同一个方法,过程不一样就是多态性。
                             诱发机制:方法的重写、函数的重载、对象类型的强制转换
                             
                                              
                                  







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值