类的高级概念

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类的高级概念相关的知识,希望对你有一定的参考价值。

一:访问修饰符

类的每一个成员(包括成员变量、方法和构造器)都有一个访问修饰符,用来判断谁可以访问该成员。
Java为类中的成员提供了四种访问级别,按照访问权限由大到小排列如下:

1、公开访问级别:使用public关键字修饰。用public关键字修饰的成员对外公开,即公开成员可以被任何其它对象访问。

2、受保护访问级别:使用protected关键字修饰。受保护的成员可以被同一包中的类所访问,还可以被类的子类所访问,不管子类是在哪个包中。

3、默认访问级别:没有访问修饰符。默认访问级别的成员可以被同一包中的其它类所访问。

4、私有访问级别:使用private关键字修饰。它是四种访问修饰符中级别最低的。私有成员只有类本身可以访问,不对外公开。 

public--该类或非该类均可访问

private--只有该类可以访问

protected--该类及其子类的成员可以访问,同一个包中的类也可访问

默认--相同数据包中的类可以访问

二:封装

访问修饰符的作用是限制属性和方法被使用和调用的范围。即指明了类的数据成员和方法的能够被访问的程度。
如果一个类的组件(数据成员或方法)被声明为私有类型(private),则任何该类外部的方法是无法访问该组件的。
get和set方法:
getXxxx()----访问器
setXxxx()----修改器
封装的好处:
类的成员变量可以成为只读或者只写的。例如,SalesPerson类中的成员变量id是只读的,在SalesPerson对象实例化后,id成员变量就无法改变了。
类可以对存储在其成员变量中的内容有一个整体的控制。例如,SalesPerson类中的成员变量commissionRate的值只能在0.0和 0.20之间。
类的用户不需要知道类是如何存储数据的。类可以改变一个成员变量的数据类型,而类的用户不需要改变其代码。
三:静态类成员
static修饰的全局变量叫静态变量,也叫类变量

  类变量的值为所有对象所共享

static修饰的方法叫静态方法,即类方法

  类方法只能使用静态变量,而不能使用非静态的全局变量

用类成员(类变量和类方法)不需要创建实例,可以通过:

  className. variableName的形式直接引用

注意:

静态方法不能访问非静态成员
非静态方法可以访问静态成员
四:静态初始化块
除了声明静态成员变量和方法外,关键字static还有另外一种用法。Java类可以包含一个静态初始化块,静态初始化块是一组当类被JVM的类加载器加载时执行的语句。
形如:

  public class 类{

  static{

  //语句

  }

  }

五:实例初始化块

实例初始化块与静态初始化块类似,它在类的对象每次实例化时执行一次。
 
实例初始化块和构造器二者之间的不同之处在于实例初始化块在构造器调用之前执行。
 
形如:

public class 类{

  {

  //语句

  } 

}

实例初始化块中的语句在任何父类构造器调用之后,在子类构造器调用之前执行。当对象被实例化,并且类包含有实例初始化块时,下面的事件按顺序发生:

1、子类中相应的构造器被调用。

2、执行对super的调用,控制流程跳转到相应的父类构造器。

3、父类构造器执行完,控制流程转回子类构造器。

4、在该子类构造器中的super()后面的任何语句执行前,实例初始化块执行。

5、最后,执行子类构造器中super()后面的语句。

六:内部类

在Java中,还可以在类的内部定义类。这种在类的内部定义的类,称为内部类。内部类所在的类称为外部类。
 
特点:

独立的一个Class文件

同样需要编译

同样可以产生对象

学会使用内部类,是掌握Java高级编程的一部分,它可以让你更优雅地设计你的程序结构

内部类--成员内部类--静态内部类

内部类--局部内部类--匿名内部类

成员内部类:

成员内部类的定义方法如下 :

  class Outer {

  class Inner {

  }

  }

只有创建了Outer类的实例对象后,才能使用Inner类的对象。
静态内部类:
静态内部类的定义方法如下 :

  class Outer {

    static class Inner {

    }

  }

Inner类存在于Outer类的内部,作为Outer的静态成员。由于静态成员可以在不创建类的情况下被使用,因此,我们可以不创建Outer类的对象,而直接引用Inner类。
局部内部类:
局部内部类是在类的方法内部定义的类。局部内部类只能在方法内部中使用。一旦方法执行完毕,局部内部类就会从内存中被清除。
 匿名内部类:
匿名内部类是一种特殊的内部类,这种类没有名字。匿名内部类的定义与对象的创建合并在一起,整个动作看起来像产生对象似的。匿名内部类是为唯一对象而定义的类
 

以上是关于类的高级概念的主要内容,如果未能解决你的问题,请参考以下文章

类的高级概念

JavaOO 类的高级概念

类的高级概念

java随笔2

第四周周总结

类的高级概念