JAVA封装与模块化

 1.public与private的分析

  Java是一门面向对象的设计语言,它可以创建类,使用public和private实现数据封装,更好的分类管理代码,增加可读性。

  public(公开):

    可以任意访问。

    常用于修饰方法。

  private(私有):

    仅限于对象本身内部访问。

    常用于修饰对象属性。

2.方法的参数

   类似于C语言的函数,Java称为方法,Java的数据类型有基本数据类型和引用类。对于基本数据类型存放的是数据,而引用数据类型存放的是地址,类似于C的指针。

  Java的方法不能修改基本数据类型的方法参数,但可以改变引用数据类型参数所指向的对象。

  原因:Java把参数拷贝了一份传递到方法里,对于引用数据类型拷贝的是地址,修改的是地址的内容,而基本数据类型复制的是内容,修改的是拷贝的那一份数据,并没有修改原来的那份数据。  

3.构造器Constructor

  • 构造器:

    每个类都包含构造函数,用new运算符调用

    用途:创建对象,对属性初始化

    特点:构造函数名称与类名相同,且无返回值。

  • 默认无参构造函数:

    如果没有自定义构造函数,那么编译器会为其创建一个默认的无参构造函数,一旦为类定义构造函数则编译器不会为其创建无参构造函数。

  • 构造函数的重载:

    重名但参数名字不同。

    new时候会根据传入参数选择对应的构造函数。

  • this关键字:

    用来调用类的私有属性,保证参数重名不会冲突。

    可以在一个构造函数里用this调用另一个构造函数。

  • 例子:
    public Person(String name,int age ,boolean gender){
            this.name=name;
            this.age=age;
            this.gender=gender;
    }
    public Person(){ 
            this("",15);        
        }

4.初始化块

  • 初始化块:随着对象的创建而执行,块按照先后顺序执行,先执行初始化块,再执行构造函数。
  • 静态初始化块:只能访问静态成员,不能访问非静态成员,且只执行一次。
  • 顺序:静态初始化块——>初始化块——>构造函数。
  • 例子:
       //初始化块 
      { save
    ++; id=save; System.out.println("This is initialization block, id is "+ save); }
    //静态初始化块
    static{ System.out.println("This is static initialization block"); }
      //构造函数
    public Person(){ System.out.println("This is constructor"); System.out.println(this.name+","+this.age+","+this.gender+","+this.id); } public Person(String name,int age ,boolean gender){ this.name=name; this.age=age; this.gender=gender; }

5.管理包机制

  • 包管理机制:类似于目录,提供访问控制,和命名空间管理功能。
  • package (name);表示类属于包(name)。 
  • 包的命名:全部采用小写,包含一些信息。
  • 包的使用:

    1.使用完全限定名(包名.类名):shapes.Circle c = new shapes.Circle();

    2.import导入类:import  包名.类名 。

    3.import导入整个包:import 包名.*;。  

    4.包和包之间不存在层次关系,即不能导入包内的包,要按目录导入。

6.final与static关键字

  • final关键字:修饰定值,也就是不能改变的值。对基本类型和引用类型都适用
  • static关键字:定义静态,相当于C语言的全局变量。

    1.要用类名调用静态方法或静态属性,Person.numOfPerson,而不要使用p1.numOfPerson或p2.numOfPerson。

    2.静态方法不能调用非静态属性与方法。

7.@Override的作用

  • @Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处:

    1、可以当注释用,方便阅读;
    2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。

posted @ 2023-09-08 16:13  时之彼岸Φ  阅读(34)  评论(0)    收藏  举报