Java 静态内部类 - Java 面向对象编程

有时候,使用内部类只是为了把一个类隐藏在另一个类内部,并不需要内部类引用外围对象,为此,可以将内部类声明为 static,以避免产生外围对象的引用。 如下,ArrayAlg 有一个方法计算最大值最小值,代码如下: double min = Double.MAX_VALUE; double max = Double.MIN_VALUE; for (double v: values) { if (min > v) { min = v; } if (max < v) { max = v; } } 这个方法需要返回两个数值,可以定义一个包含两个值的类 Pair。 class Pair { private double first; private double second; public Pair(double first, double second) { this.first = first; this.second = second; } public double getFirst() { return first; } public double getSecond() { return second; } } 这个 Pair 可以定义为 ArrayAlg 的内部类,由于在 Pari 对象中不需要引用任何其他的对象,为此可以将这个内部类声明为 static。 class ArrayAlg { public static class Pair { ... } public static Pair minmax(double[] values) { ... return new Pair(min, max); } } 静态内部类的对象除了没有对生成它的外围类对象的引用特权外,与其他所有内部类完全一样。

面向对象程序设计(简称 OOP)是当今主流的程序设计泛型。Java 是完全面向对象的,面向对象的程序是由对象组成,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。

面向对象将数据放在第一位,然后在考虑操作数据的算法。

类(class)是构造对象的模板和蓝图,由类构造(construct)对象的过程称为创建类的实例(instance)。

封装(encapsulation)将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。对象中的数据称为实例域(instance field),操纵数据的过程称为方法(method)。对于每个特定的类实例(对象),都有一组特定的实例域值。这些值的集合就是这个对象的当前状态(status)。封装的关键在于绝对不能让类中的方法直接访问其它类的实例域,程序仅通过对象的方法与对象数据进行交互。封装可以提高程序的重用性和可靠性。

继承(inheritance)是通过扩展一个类来建立一个新的类,这个扩展后的新类具有所扩展的类的全部属性和方法。

要想使用对象必需首先构造对象,并指定其初始状态,然后对对象应用方法。如下:

Date today = new Date();  
System.out.println(today.toString());  

Date 是 Java 标准库中的一个类,它的对象描述的是一个时间点。通过在构造器前(构造器名和类名相同)加上 new 操作符,构造了一个 Date 对象,并将其赋值给给 today 变量。然后调用 Date 类中的 toString 方法,返回日期的字符串描述,并在控制台打印。


Run