java代码复用(继承,组合以及代理)
2014-11-20 17:26
701 查看
作为一门面向对象开发的语言,代码复用是java引人注意的功能之一。java代码的复用有继承,组合以及代理三种具体的表现形式,下面一一道来。
第一种方式是通过按照现有的类的类型创建新类的方式实现代码的复用,这种方式称之为继承。当我们创建一个新类时,总是继承这样或者那样的父类,隐式的父类是Object类。
public class A {
int a;
public A(int a) {
this.a=a;
System.out.println("------construct a------");
}
public void display(){
System.out.println(a);
}
}
public class B extends A {
int b;
public B(int b) {
super(b);
System.out.println("------construct b------");
}
}
public class C extends B {
int c;
public C(int c) {
super(c);
System.out.println("------construct c------");
}
public static void main(String[] args) {
new C(9).display();
}
}
第二种方式是组合,通过在新类中创建已存在的类的对象的方式来实现,这种方式很常见,代码如下
public class A {
int a;
public A(int a) {
this.a=a;
System.out.println("------construct a------");
}
public int getA(){
return a;
}
}
public class B{
private int b;
private A a=new A(2);
public B(int b) {
this.b=b;
System.out.println("------constructor b------");
}
public void show(){
b=b+a.getA();
System.out.println("------total:"+b);
}
public static void main(String[] args) {
new B(2).show();
}
}
第三种方式是代理,通过将类里面详细的实现方式封装起来,只提供类的方法的子集部分,代码如下
public class A {
public A() {
System.out.println("------construct a------");
}
public void method01(){
System.out.println("------method01------");
}
public void method02(){
System.out.println("------method02------");
}
public void method03(){
System.out.println("------method03------");
}
}
public class B{
private A a=new A();
public B() {
System.out.println("------constructor b------");
}
public void method01(){
a.method01();
}
}
总结:继承是通过关键字extends来实现的,在继承过程中,通过继承,子类可以获得父类的所有属性和方法;组合是将另一个对象的引用引入新类,在新类中可以直接使用引入类的共有方法;代理和组合很相似,但是他们表达的意思不一样,组合引入新类的主要是方便使用引入类的某些方法和属性,而代理主要是想隐藏部分引入类的方法或者是属性,通过代理类来达到这样的目的。
第一种方式是通过按照现有的类的类型创建新类的方式实现代码的复用,这种方式称之为继承。当我们创建一个新类时,总是继承这样或者那样的父类,隐式的父类是Object类。
public class A {
int a;
public A(int a) {
this.a=a;
System.out.println("------construct a------");
}
public void display(){
System.out.println(a);
}
}
public class B extends A {
int b;
public B(int b) {
super(b);
System.out.println("------construct b------");
}
}
public class C extends B {
int c;
public C(int c) {
super(c);
System.out.println("------construct c------");
}
public static void main(String[] args) {
new C(9).display();
}
}
第二种方式是组合,通过在新类中创建已存在的类的对象的方式来实现,这种方式很常见,代码如下
public class A {
int a;
public A(int a) {
this.a=a;
System.out.println("------construct a------");
}
public int getA(){
return a;
}
}
public class B{
private int b;
private A a=new A(2);
public B(int b) {
this.b=b;
System.out.println("------constructor b------");
}
public void show(){
b=b+a.getA();
System.out.println("------total:"+b);
}
public static void main(String[] args) {
new B(2).show();
}
}
第三种方式是代理,通过将类里面详细的实现方式封装起来,只提供类的方法的子集部分,代码如下
public class A {
public A() {
System.out.println("------construct a------");
}
public void method01(){
System.out.println("------method01------");
}
public void method02(){
System.out.println("------method02------");
}
public void method03(){
System.out.println("------method03------");
}
}
public class B{
private A a=new A();
public B() {
System.out.println("------constructor b------");
}
public void method01(){
a.method01();
}
}
总结:继承是通过关键字extends来实现的,在继承过程中,通过继承,子类可以获得父类的所有属性和方法;组合是将另一个对象的引用引入新类,在新类中可以直接使用引入类的共有方法;代理和组合很相似,但是他们表达的意思不一样,组合引入新类的主要是方便使用引入类的某些方法和属性,而代理主要是想隐藏部分引入类的方法或者是属性,通过代理类来达到这样的目的。
相关文章推荐
- java 复用类的三种方式区别 组合,继承,代理的区别
- Java 代码复用(组合与继承)
- java 复用代码(组合与继承)
- java复用类(组合、继承,代理,final关键字,初始化顺序) 知识点的总结
- Java中的复用类——继承、组合和代理
- Java中的复用类——继承、组合和代理hello
- JAVA中的复用类:继承、组合和代理
- JAVA代码重用机制复用类之继承语法(附源码)
- 第7章 复用类(组合,继承,代理)
- Java之继承、组合、代理
- [Think In Java]基础拾遗1 - 对象初始化、垃圾回收器、继承、组合、代理、接口、抽象类
- java继承与组合与代理
- 【Thinking in Java】组合、继承和代理的区别
- 如何实现在已有代码之后添加逻辑之继承,组合(静态代理)实现方法
- [Thinking in Java] - No.1 组合、继承和代理
- 4.java面向对象语法学习(部分3-继承,组合,代理)
- 用继承,组合复用代码及default的继承范围
- java instanceof和getClass()的区别以及继承与组合的区别
- 代码复用 -- 组合和继承
- Java基础--复用类(组合和继承)