访问权限:
访问权限是指:类创建的对象是否可以通过"."运算符访问分配给自己的变量,是否可以通过“.”运算符调用类中的实例方法和类方法,类中的实例方法可以操作该类中的实例变量和类变量。类方法总是可以操作该类中的类变量,与访问限制符没有关系。
不用private、public、protected修饰的成员变量和方法被称为友好变量和有好方法。如类A中有友好变量和友好方法,当在另一个类中用类A创建一个对象后,如果这个类与类A在同一个包中,那么该对象能访问自己的友好变量和友好方法。
一个类可以把对象作为自己的成员变量,用这样的类创建对象那么该对象中就会有其他对象,也就是说,该对象将其他对象作为自己的组成部分,或说该对象是由几个对象组合而成。(P73)
基本类型数据的类包装(P73),反编译和文档生成器(P75略)
使用java运行环境扩展中的类。(方便用,避免冗余)。
五、继承、接口、泛型
java不支持多重继承,既子类只能有一个父类。
类申明中使用关键字extends来声明一个类的子类,格式如下:
class 子类名 extends 父类名{...}
如:class Students extends People{...}
Students声明为People类的子类(扩展),二People是Students的父类(超类)
如果一个类申明中没有使用关键字extends,这个类被系统默认文是Object类的子类。Object是报java.lang中的类。
子类从父类继承的方法,这部分方法可以操作父类中的私有变量。例子P83
子类中定义的成员变量与父类中的成员变量同名时(不必类型相同),这时子类就隐藏了继承的成员变量,即子类从新声明定义了这个成员变量。
子类可以通过使用从父类继承的方法f()操作被隐藏的成员变量。
方法从写:子类中定义一个方法,并且这个方法的名字、返回类型、参数个数和类型与父类继承的方法完全相同。一旦子类重写了父类的方法,就隐藏了继承的方法,当子类调用此方法时,一定是调用重写的的方法。;重写的方法既可以操作继承的成员变量,也可以操作子类声明定义的成员变量,如果子类想使用被隐藏的方法,必须使用关键字super。
重写父类方法是不可以降低权限,不能讲public降为private或protected。
关键字super,
子类不继承父类的构造方法,因此子类要想使用父类的构造方法时,必须在子类的构造方法中使用关键字super来表示。子类在创建对象时总是优先调用父类的某个构造方法。也就是说如果子类的构造方法没有明显的知名使用父类的那个构造方法时,子类就调用父类的不带参数的构造方法。想见P86
final类不能被继承,既不能有子类。
对象的上转型对象:假设B是A的子类或间接子类,用B创建一个对象,并把这个对象的引用放到类A声明的对象中时,如
A a;
B b=new B();
a=b;
也可以直接写为:
A a;
a=new B();
上转型对象能操作子类声明定义的成员变量,不能使用子类声明定义的方法。上转型对象可以代替子类去调用子类重写的实例方法。。如果子类重写了父类的某个实例方法后,子类对象的上转型对象调用这个方法时,一定是调用了这个重写的方法。
上转型对象不是父类创建的 对象,是有子类负责创建的,是子类对象的“简化形态”,不失去了一些属性和功能。注意:不可以将父类创建的对象的引用赋值给子类声明的对象。关心子类新增的功能,只关心子类继承和重写的功能。
面向抽象P91
接口:
接口体中只进行方法的声明,不允许提供方法的实现,所以接口中方法的定义没有方法体。
接口中只允许有常量,不能有变量。
如果一个类实现某个接口,那么这个类必须实现该接口的所有方法。
如果一个接口不加public修饰,称为友好接口,可以被同一个包中的类使用。
接口的思想在于它可以增加很多类都需要实现的功能,使用相同的接口不一定有继承关系。....P97
抽象类和接口都是让设计者忽略细节,将重心放在整个系统的设计上。如果某个问题需要使用继承才能更好的解决,推荐使用抽象类。如果某个问题不需要继承,可以考虑使用接口。
内部类:内部类的类体中不可以声明类变量和类方法。。
匿名类等其他类P102
好累。。睡了,明天继续...