JAVA类与对象

1.类与对象的概率
            什么是类?
                描述具有共同特征的实体
                属性,方法(函数)
            什么是对象?
                对象是类的实例化,是真实存在的独立个体(存在内存中)
                状态(特征),行为
            类与对象的关系:
                类是对象的抽象化,对象是对象的实例化。
                类的属性对应对象的状态;类的方法对应对象的行为。
    
        2.类的结构:
            定义
                [修饰符] class 类名{
                    //属性
                    成员变量:类中方法外定义的变量
                        实例变量
                        [修饰符] 数据类型 变量名[=值];
                        类变量
                        [修饰符] static 数据类型 变量名[=值];
                        类变量于实际变量的区别:
                            类变量:
                                staic修饰符修饰,类变量是所有对象共享的;可通过类名.变量名访问
                            实例变量
                                没有static修饰,实例变量属于一个对象相对独立;只能通过对象名.变量名访问
                    //方法
                    成员方法:类中声明的方法;
                        实例方法
                            [修饰符] 返回值类型 方法名([参数]){函数体;}
                        类方法
                            [修饰符] static 返回值类型 方法名([参数]){函数体;}
                            类方法与实例方法的区别:
                                类方法:
                                    static修饰,可以直接访问其他类方法和类变量
                                    不能直接访问实例变量与实例方法。
                                实例方法
                                    未使用static修饰,可以直接方法类方法和类变量
                                    以及直接访问实例方法与实例变量。

                    构造方法//可为空方法]
                        用于构建(创建)对象,构造方法可以带参数,带参数的
                        构造方法一般用于初始化操作,初始化成员变量。
                        
                         任何一个类均拥有一个构造方法,若未手动创建构造方法
                         JAVA自动提供一个默认的无参无方法体的构造方法。
                          
                          若手动创建,默认则会被覆盖
                            [修饰符] 类名([参数]){函数体;//初始化操作}
                    关键字:this
                        指代当前对象,通过this可以访问到当前对象的实例变量
                        以及实例方法
                }


            扩展:变量的分类
                局部变量以及全局变量
                局部变量:方法或者函数中声明并使用的变量(形参)
                全局变量:成员变量可视为全局变量,一般的全局变量是指类变量
              变量的作用域:
                局部变量作用于当前语句块
                全局变量作用于整个类
        3.对象的创建:
            类名 变量名(对象名) = new 构造方法名([参数]);
        
        4.访问对象:
            对象名.属性名//访问对象的属性
            对象名.方法([参数])//访问对象的方法
        
        5.参数:形式参数(形参);实际参数(实参)
            形式参数:声明方法时定义的参数变量;没有实际的值,用于接收方法调用时传递过来的值。
            实际参数:方法实例化时传递的参数变量,实际值。
        
        6.返回值:
            返回值类型
                数据类型
                    基本数据类型
                    RETURN 值
                    引用数据类型
                    return 值
                void//无返回值

public class TestVarAndMethod {
    static String name ;
    int age ;
    //类方法
    public static void setName(String name){
        //类方法中不能使用this
       /* this.name=name;//this 不能访问类变量*/
       TestVarAndMethod.name=name;
    }
    //实例方法
    public void setAge(int age){
       /* this.name="";//通过this关键字访问类变量*/
        this.age=age;
    }
    //实例方法
     public void  show(){
        setName("tom");
        setAge(21);
         System.out.println("name="+name+"age="+age);
     }
     //类方法
    public static void printMsg(){
        setName("tom");
       /* setAge(21);//类方法不能访问实例变量*/
        System.out.println("name="+name);
        /*System.out.println("age"+age);//类方法不能访问实例变量*/
        /*//只能通过新建 对象.方法() 访问
        TestVarAndMethod tvm=new TestVarAndMethod();
        tvm.setAge(21);*/
    }

    public static void main(String [] args){
          TestVarAndMethod tv1 = new TestVarAndMethod();
          tv1.setName("草莓");
          tv1.setAge(22);
          TestVarAndMethod tv2 = new TestVarAndMethod();
          tv2.setName("答莓");
          tv2.setAge(21);
          System.out.println(tv1.name+","+tv1.age);
          System.out.println(tv2.name+","+tv2.age);
    }
}

 

结果:

答莓,22
答莓,21

 

原因:类变量共享,实例变量不共享

static修饰的变量存储在栈中:先进后出 所以输出的是后进栈的答梅

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值