1.知识要点
❶不可变类:一旦创建,其内容不能改变的类称之为不可变类。满足:⑴所有数据域私有,⑵没有修改器,⑶没有访问器方法,其返回一个指向可变数据域的引用。(这样通过引用就能修改私有数据域)。比如,返回数组,String等皆可能导致实际数据被改变
❷变量作用域:类的变量和方法可以任意顺序出现,只要方法没有使用某个变量。方法可以定义与类数据变量名称(实例变量和静态变量)相同的局部变量,且使用具有较高的优先级。
❸this引用:指向本身的引用。可以在无参和少参构造函数中使用this调用多参构造函数,便于维护,使用方法this(参数表)。此时this指向类名。Java要求这种使用在任何其他语句之前出现。
❹一个对象可以包括另外一个对象,关系称之为组合。即类的数据域可以定义另外一个类的引用变量。
2.类的设计原则
❶内聚性:描叙单一实体。所有操作应该在逻辑上配合,支持连贯的目标。
❷一致性:命名遵循规则
❸封装性:private隐藏数据域。get和set提供访问器和修改器。
❹清晰性:在不产生混淆的情况下,凭直觉来定义。
❺完整性:供不同的用户使用的齐备功能
❻实例和静态:不依赖于单独对象的变量和方法应该声明静态。实用类名引用静态变量和方法。提供公有的静态修改器,修改静态数据域。实例可以调用静态(实例和方法),但静态不能调用实例(变量和方法)
3.实例-栈
public class StudyObject { static int size=10; public static void main(String args[]) { Stack mystack = new Stack(); java.util.Random random=new java.util.Random();//随机数 random.setSeed(100); for(int i=0;i=elements.length) { int[] temp=new int[size+1]; System.arraycopy(elements, 0, temp, 0, size);//扩展数组,字符串复制 elements=temp; } elements[size++]=e; } public int pop() { int last=elements[--size]; int[] temp=new int[size]; System.arraycopy(elements, 0, temp, 0, size);//删除最后一个元素 elements=temp; return last; } public int peek() {return elements[size-1];} public boolean isEmpty() {return size==0;} public int getSize() {return size;} public void getElements() { for(int i=0;i