Java 学习笔记day6 (面向对象2)

 this关键字

在编程时,为了区分成员变量与局部变量,在编码时,可以使用this关键字进行指示
使用this调用的是成员变量或成员方法,还有构造方法
this在实际运行时,表示当前正在调用此方法的对象
this表示当前对象
public class Student {
    int num;
    String name;
    String gender;

    public Student(){
        //赋予默认值
        this(1002,"李四","女");   //无参的构造方法
    }

    public Student(int num,String name,String gender){
        this.num=num;
        this.name=name;   //这样就区分了成员变量和局部变量. 这种情况占了this使用情况的大多数!
        this.gender=gender;
    }


    public void study(){
        System.out.println(this.name+"好好学习");
        this.exam();    //this调用成员方法
    }

    public void exam(){
        System.out.println(this.name+"认真考试");
    }

    public static void main(String[] args) {
        Student stu=new Student(1001,"张三","男");
        stu.study();
        stu.exam();


        Student stu1=new Student();
        System.out.println(stu1.num);
        stu1.num=1003;
        System.out.println(stu1.num);
    }
}

static关键字


    static修饰的变量就是静态变量(类变量,与类一样,只有一份)
    当所有类的对象的某个属性值相同时,可以把它定义为静态的
    当类被加载时,静态成员就会被加载,先于对象创建存在
    静态先执行,可以被类,对象访问,非静态只能通过对象访问

public class Chinese {
    /*
    static表示静态,可以修饰成员变量,成员方法,代码块,内部类
    */
    String name;
    static String country="中国";  //静态成员建议直接使用类名进行访问
  
    public static void main(String[] args) {
        Chinese chinese1 = new Chinese();
        chinese1.name="张三";
        Chinese chinese2=new Chinese();
        chinese2.name="李四";
        System.out.println(Chinese.country);  //静态成员因为在内存中只有一份,所以建议直接使用类名进行访问
        System.out.println(chinese1.country);
    }
}

代码块

代码块:
     定义在类中,类似于一个没有名字的方法,
     因为代码块没有名字,只能在满足条件时,自动由系统调用
     分为
        实例代码块     :在创建对象时,被自动调用执行
             {
              }
        静态代码块     :在类被加载时,被自动调用执行
             static{
             }

        静态代码块:
            类什么时候被加载:
                通过类名访问类中的静态成员时,类会被加载
                在一个类中使用main方法,也会加载类
                创建对象也会被加载
            类只被加载一次
        如果有多个实例代码块或多个静态代码块,按照先后顺序执行
        代码块先于构造方法执行
public class Demo {
    int n;

    public Demo(){
        n=3452;
    }
    
    //实例代码块
    {
        System.out.println("Demo实例代码块1");
    }
    {
        System.out.println("Demo实例代码块2");
    }
    //静态代码块
    static {
        System.out.println("Demo静态代码块3");
    }
    static {
        System.out.println("Demo静态代码块4");
    }
    public static  void test(){
        System.out.println("静态test");
    }
     public static void main(String[] args) {
        Demo.test();
        new Demo();
        Demo.test();
        new Demo();
    }

}
运行结果:


  为了解决一些类管理的问题,java引入包机制
  包称为类的命名空间(可以理解为一个文件夹)
  是类名的组成部分
  类名(全类名) = 包名(地址) + 类名简称
  一个类属于不同的包,就可以避免同名类问题.
  按照不同功能管理类
  控制访问权限
  包名单词全部小写
  包命名:
        第一级: 项目类型   com,org,gov,edu...
        第二级: 公司名称   sun,oracle
        第三级: 项目名称   oa erp
        第四级: 功能模块名称
   在类中使用其他包中的类时,需要使用import关键字导入类的地址(全类名)
   java.lang包中的类不需要导入

访问权限修饰符
    访问权限修饰符用来修饰类中的成员,控制是否可以被访问
    从大到小
      public: 公共权限.在系统中哪里都可以访问,
              可以修饰 类(包含内部类),方法(构造方法,成员方法),成员变量
      protected:受保护权限,在同包类,本类,不同包子类可以访问
                 可以修饰 内部类,方法(构造方法,成员方法),成员变量
               :默认权限,在本类,同包类访问
                可以修饰 类(包含内部类),方法(构造方法,成员方法),成员变量
      private:私有权限,只能在本类中使用
               可以修饰 内部类,方法(构造方法,成员方法),成员变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值