复用类:
- 复用代码的类
一、复用类使用(有三种方式):
- 组合语法 : 将对象引用置于新类中即可.
- 继承 : 采用继承实现.
- 代理 : 想复用类的代码,但又不想暴露太多的内容.
**组合语法示例**
class Soap {
private String s;
public Soap() {
System.out.println("Soap()");
}
}
public class Bath {
private Soap castille;
public Bath() {
System.out.println("Inside Bath()");
castille = new Soap();
}
public String toString() {
return "castille=" + castille;
}
}
**继承示例**
还是沿用上面的 Soap 方法
public class Bath extends Soap{
public Bath() {
super();
System.out.println("Inside Bath()");
}
}
**代理示例**
//定义接口
public class SpaceShipControls{
void up(int velocity){}
void down(int velocity){}
}
//实现接口的类
public class SpaceShip extends SpaceShipControls{
private String name;
public SpaceShip(String name){this.name = name;}
public String toString(){return name;}
public static void main(String[] args){
SpaceShip protector = new SpaceShip(“NSEA Protector”);
protector.up(100);
}
}
//代理
public class SpaceShipDelegation{
private String name;
private SpaceShipControls controls = new SpaceShipControls();
public SpaceShipDelegation(String name){
this.name = name;
}
public void up(int velocity){
controls.up(velocity);
}
public void down(int velocity){
controls.down(velocity);
}
public static void main(String[] args){
SpaceShipDelegation protector = new SpaceShipDelegation(“NSEA protector”);
protector.down(100);
}
}
二、详细讲解
- 语法组合,没什么好讲的
- 代理,没什么好讲的
- 继承,讲一下
继承原理
通过看图我们知道,当子类继承父类,会继承父类中的方法表以及方法等。当子类执行父类代码的时候,会通过寻址,找到其父类的代码区,并执行其中的代码。
关于重写父类方法:
1.如果子类重写父类的方法(如图中C类重写父类中的A1、B1方法),重写的方法不是静态方法的话,一般都会在子类中覆盖父类的方法,并将该方法的指针指向新的地址。
2.子类中如果定义了相同名称的静态方法,并不会重写,而应该是在内存中又分配了一块给子类的静态方法,没有重写这一说。(父类的静态方法不能被子类重写,即使你写一个跟父类相同名称的静态方法,也只是在子类中创建一个新的静态方法)。
因为静态方法从程序开始运行后就已经分配了内存,也就是说已经写死了。所有引用到该方法的对象(父类的对象也好子类的对象也好)所指向的都是同一块内存中的数据,也就是该静态方法。
更多java基础总结:
总结篇(9)---字符串及基本类 (1)字符串及基本类之基本数据类型
总结篇(10)---字符串及基本类 (2)字符串及基本类之java中公共方法及操作
总结篇(12)---字符串及基本类 (4)Integer对象
总结篇(14)---JVM(java虚拟机) (1)JVM虚拟机概括
总结篇(15)---JVM(java虚拟机) (2)类加载器
总结篇(16)---JVM(java虚拟机) (3)运行时数据区
总结篇(17)---JVM(java虚拟机) (4)垃圾回收
总结篇(18)---JVM(java虚拟机) (5)垃圾回收算法
总结篇(19)---JVM(java虚拟机) (6)JVM调优
总结篇(24)---Java线程及其相关(2)多线程及其问题
总结篇(25)---Java线程及其相关(3)线程池及其问题
总结篇(26)---Java线程及其相关(4)ThreadLocal
总结篇(27)---Java并发及锁(1)Synchronized
总结篇(31)---JUC工具类(1)CountDownLatch