在C++中,没有提供用于表示抽象类的特殊关键字。只要有一个纯虚函数,这个类就是抽象类。
hashCode()方法是定义在Object类中,因此每个对象都有一个默认的散列码,其值为对象的存储地址。
绝大多数的toString方法都遵循这样的格式:类名[域值],最好通过调用getClass().getName()获得类名。如:
public String toString(){ return getClass().getName() + "[name=" + name + ", salary=" + salary + "]"; }
int[] nums = {1,2,3};
String s = Arrays.toString(nums);将生成字符串"[1,2,3]"。要想打印多维数组(即,数组的数组)则需要调用Arrays.deepToString方法。
Java的老版本中,程序员使用Vector类实现动态数组。不过,ArrayList类更加有效,没有任何理由一定要使用Vector类。
参数数量可变的方法
在Java5.0以前,每个Java方法的参数数量是固定的。5.0之后的版本提供了可以用可变的参数数量调用的方法。例如:
/** * 参数数量可变的方法 */public class Demo1 { public static void main(String[] args) { Demo1.largest(1, 2); Demo1.largest(1, 2, 3); } public static void largest(int... ints) { //注意此处参数列表的格式 int largest = Integer.MIN_VALUE; for(int n : ints) { if (n > largest) { largest = n; } } }}
枚举类
import java.util.Scanner;public class EnumTest { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("Enter a size: (SMALL, MEDIUM, LARGE, EXTRA_LARGE)"); String input = in.next().toUpperCase(); Size size = Enum.valueOf(Size.class, input); System.out.println("size:" + size); System.out.println("abbreviation=" + size.getAbbreviation()); if (size == Size.EXTRA_LARGE) { System.out.println("Good job--you paid attention to the _."); } } enum Size { SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL"); private String abbreviation; Size(String s) { abbreviation = s; } public String getAbbreviation() { return abbreviation; } public void setAbbreviation(String abbreviation) { this.abbreviation = abbreviation; } }}
运行结果:
Enter a size: (SMALL, MEDIUM, LARGE, EXTRA_LARGE)
extra_largesize:EXTRA_LARGEabbreviation=XLGood job--you paid attention to the _.
继承设计的技巧
- 将公共成员和方法放在父类中。
- 不要使用受保护的域(成员变量)。第一,破坏了封装性;第二,Java中,同一个包中的所有类都可以访问protected修饰的域,不管它是不是这个类的子类。
- 使用继承实现“is-a”的关系。比如钟点工和全职员工不是“is-a”的关系,不该让钟点工继承Employee类。
- 除非所有继承的方法都有意义,否则不要使用继承。
- 在开发applet时,尽量不要用反射。因为应用开发的反射比较脆弱。
posted on 2019-09-26 15:47 阅读( ...) 评论( ...) 收藏