Java面向对象(this,static,代码块,包,访问权限修饰符)

一.this关键字

1.概念:

this修饰的变量用于指代成员变量

方法的形参如果与成员变量同名,不带this修饰的变量指的是形参

方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量

什么时候用this? 解决局部变量隐藏成员变量

this:代表所在的类对象的引用

方法被哪个对象调用,this就代表哪个对象

2.作用:

1.this关键字可以用来访问本类的属性、方法、构造器

2.this用于区分当前类的属性和局部变量

3.访问成员方法的语法:this.方法名(参数列表)

3.访问构造器语法:this(参数列表);注意只能在构造器使用(即只能在构造器中访问另外一个构造器) 必须放在第一条语句

4.this不能在类定义的外部使用,只能在类定义的方法中使用

3.示例:

public class Person {

     String name;
     int age;
     String gender;


     public Person(String name,int age,String gender){
           this.name = name;
           this.age = age;
           this.gender  = gender;
     }
}

二.static关键字

1.概念:

static被称为静态,可以用来修饰类的成员变量,成员方法,代码块,内部类。

静态成员不依赖于类的实例,被类的所有实例共享,就是说 static 修饰的

方法或者变量不需要依赖于对象来进行访问,只要这个类被加载,静态成员

就会被加载创建

2.特点:

非静态成员方法

1.能够访问静态的成员变量;

2.能够访问非静态的成员变量;

3.能够访问静态的成员方法;

4.能够访问非静态的成员方法;

静态的成员方法

1.能够访问静态成员变量,但是不能够直接访问非静态成员变量

2.能够访问静态的成员方法,但是不能够直接访问非静态成员方法

一句话描述就是:方便在没有创建对象的情况下进行调用(方法/变量)。

显然,被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。

static可以用来修饰类的成员方法、类的成员变量,另外也可以编写static代码块来优化程序性能

3.示例:

public class Chinese {

     String name;  //中国人,每个人的名字都不同,需要在每个对象中都有一个name属性

    //中国人 国籍都是中国, 此时应该用static修饰,静态属性在内存中只有一份,所有对象共享减少内存用
     static String country = "中国";
     //使用一个变量来记录此类被创建了多少个对象
     static int  count  = 0;


      public Chinese(){
          count = count+1;
      }

 public static void main(String[] args) {

        //静态成员随着类的加载而加载的,只要类加载了,静态成员就可以直接被使用了
        System.out.println(Chinese.country);


        Chinese c1 = new Chinese();
                c1.name  = "张三";
                //c1.country = "中国";

        Chinese c2 = new Chinese();
                c2.name = "李四";
                //c2.country = "中国人";

        //System.out.println(c1.country);
      //  System.out.println(c2.country);
        System.out.println(Chinese.country);//建议使用类名访问静态的成员

        System.out.println(Chinese.count);


    }

}

三.代码块

概念:

代码块在类中声明,类似一个没有名称的方法体 ( 代码块 ) ,代码分实例块和静态块
实例块:每次创建对象时自动调用
{
// 任何符合语法的 Java 代码
}
静态块:类加载时自动调用,仅一次,与是否创建对象无关。
static {
// 任何符合语法的 Java 代码
}
public class Demo {

    static int a = 10;


    {
        System.out.println("实例代码块1");
    }
    {
        System.out.println("实例代码块2");
    }

    static{
        System.out.println("静态代码块1");
    }
    static{
        System.out.println("静态代码块,2");
    }

    public static void main(String[] args) {

        System.out.println(Demo.a);
        System.out.println(Demo.a);
    }
}

结果为:

四.包

1.概念:

在编写 Java 程序时,随着程序架构越来越大,类的个数也越来越多,这时就会

发现管理程序中维护类名称也是一件很麻烦的事,尤其是一些同名问题的发生。

有时,开发人员还可能需要将处理同一方面的问题的类放在同一个目录下,以

便于管理。

为了解决上述问题,Java 引入了包(package)机制,提供了类的多层命名空

间,用于解决类的命名冲突、类管理等问题。

使用package关键字修饰包

每个类属于一个特定的包,所以java中一个类的完整名称等于包名+类名

2.包的作用:

按照不同功能管理类

避免类重名

控制访问权限

3.命名规范:

在包名中,可以使用.号来区分包的级别;包名一般情况下是小写

第一级 指该项目的类型,如com,org,gov等,

第二级 指项目所开发或者运行的公司名称,如:oracle,sun,huawei等

第三级 指项目的名称,如:bcms,oa,erp,cms等

第四级 指项目模块的名称,如:bean,action,exception等

导入外部包的类,关键字“import”

当在一个类中使用其他包中的类时,需要先使用import关键字导入进来. 只有java.lang包中的类比较特殊,使用时不需要导入.

五.访问权限修饰符

1.概念:

访问权限修饰可以修饰类,成员变量,成员方法, 内部类.

2.分类:

访问权限修饰符共有4种:

public : 公共权限 修饰类,成员变量,成员方法, 内部类

protected: 受保护权限 修饰成员变量,成员方法, 内部类

什么都不写 : 默认权限 修饰类,成员变量,成员方法, 内部类

private : 私有权限 修饰成员变量,成员方法, 内部类

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值