------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流!<span style="font-family: Arial, Helvetica, sans-serif;">-------</span>
复用代码是面向对象程序设计语言的功能之一,身为完全面向对象的java也不例外。
复用代码的方式有两种:组合与继承。
组合语法:将对象引用到新类中即可。
//汽车类
public class Car {
String car = "汽车";
}
//发动机类
public class Motor {
String motor = "发动机";
}
// 组合
public class Test {
public static void main(String[] args) {
Car c=new Car();
Motor m=new Motor();
System.out.println(m.motor+"是"+c.car+"的一部分");
}
}
继承语法: 通过关键字extends来实现,当继承某类时,会自动得到该类的所有域和方法。
//动物类
public class Animal {
public void sleep(){
System.out.println("睡");
}
public void eat(){
System.out.println("吃");
}
}
//猴子
public class Monkey extends Animal {
public Monkey(){
super();
}
public void swarm(){
System.out.println("爬树");
}
}
1、继承是所有面向对象语言不可缺少的组成部分。当创建一个类时,这个类总是在继承其他类。除非已明确指出要从其他类继承。否则隐式从java的标准类Object进行继承。
2、继承并不只是复制父类接口。当创建了一个子类对象时,该对象包含了一个父类的子对象。这个子对象与用父类直接创建的对象是一样的。二者区别在于,前者被包装在子类对象内部,而后者来自于外部。1
3、使用关键字 super() 在子类中调用父类构造器来进行初始化。
4、如果父类拥有某个已被多次重载的方法名称,那么在子类重新定义该方法名称并不会屏蔽其在父类中的任何版本。因此,无论是在该层或者它的父类中对方法进行定义,重载机制都可以正常工作。
5、可以使用javaSe5新增加的@Override注解,来防止方法重载而非覆盖。
6、组合与继承之间选择:a、组合与继承都允许在新的类中放置子对象,组合是显式地,而继承是隐式的。
b、组合通常用于想在新类中使用现有类的功能而非它的接口。
c、继承通常是使用某个现有类,并开发它的拓展版本。
d、”is--a”关系用继承”is---has”关系用组合。
7、继承和组合都能从现有类型生成新类型。组合一般是将现有类型作为新类型底层实现的一部分来加以复用,而继承复用的是接口。
8、尽管面向对象编程对继承极力强调,但开始一个设计时,一般应优先选择使用组合,只在确实必要时才使用继承。因为组合更具灵活性。