java组合、继承
来源:互联网 发布:单片机无线收发模块 编辑:程序博客网 时间:2024/06/06 13:22
一、组合
在一个类中有另一个类的对象。“has-a”
示例:
class Water{ private String s; Water(){ System.out.println("Water()"); s = "Constructed"; } public String toString(){ return s;}}public class SprinklerSystem{ private String value; private Water w = new Water();//这就是组合 private int i; public String toString(){ return "value = "+ value +" i = "+ i +” w = "+ w; } public static void main(String[] args){ SprinklerSystem sprintlers = new SprinklerSystem(); System.out.println(sprinklers); }}输出:Water()value = null i = 0 w = Constructed
private Water w = new Water();这就是组合,在一个类中创建另一个类的对象。并且这个对象w和SprinklerSystem类的对象的生命周期相同。
每一个非基本类型的对象都有一个toString()方法,当编译器需要一个String而只有一个对象时如:System.out.println(sprinklers);便会调用toString()方法。
二、继承
继承:is-a,讲一个类的属性和方法保留,加上自己特有的方法和属性形成新类。
示例:
class Person{ public void eat(){ System.out.println("Person在吃东西"); } private void sing(){ System.out.println("Person在唱歌"); }}class Man extends Person{ public void dance(){ System.out.println("Man在跳舞"); }}public class Test{ public static void main(String[] args){ Person p = new Person(); Man m = new Man(); p.eat(); p.sing(); //p.dance();父类不可以调用子类的方法。 m.eat(); //m.sing() sing方法为private,子类不可以调用父类private修饰的方法和变量。 m.dance(); }}输出:
Person在吃东西
Person在唱歌
Person在吃东西
Man在跳舞
当创建一个类的时候,总是在继承。除非已明确向上述代码中指出从其他类中继承,否则就是隐式地从java根类Object。所有的类都是Object的子类(直接子类或间接子类)。继承在继承过程中,并不一定非得要调用基类的方法。也可以在导出类中添加新的方法。子类与父类初始化顺序可以查看这里。
三、组合与继承之间选择
组合和继承都允许在新的类中放置其他类对象,组合是显示地这样做,而继承是隐式的做。
组合技术通常用于在新类中使用现有类的功能而非它的接口这种情形。即,在新类中嵌入某个对象,让其实现所需要的功能,但新类的用户看到的只是为新类定义的接口,而非所嵌入对象的接口。
在继承的时候,使用某个现有类,并开发一个它的特殊版本。通常,这意味你在使用一个通用类,并为了某种需要而将其特殊化。车子 就是 交通工具的一个特殊化,is-a的关系是用继承表达的,而has-a的关系是用组合来表达的。
0 0
- java 组合和继承
- java-组合优于继承
- 【java】组合 and 继承
- JAVA-组合与继承
- JAVA 组合与继承
- JAVA 继承与组合
- java组合、继承
- java继承与组合
- Java继承与组合
- java继承和组合
- java继承与组合
- Java - 组合和继承
- java组合与继承
- java 继承与组合
- java继承和组合
- java 继承与组合
- java的组合和继承
- Java中的继承与组合
- 对链表的操作为什么要使用二级指针
- iOS及Mac开源项目和学习资料【超级全面】
- Real-time human pose recognition in parts from single depth images 中文翻译【译】【中译】微软kinect中用的算法
- java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.
- mq异步发送
- java组合、继承
- vmware虚拟机和win7主机共享文件(简单、快捷)
- Java文件下载
- div层火狐居中在ie不居中问题解决
- Eclipse Building Workspace 解决办法
- 关于Python学习之我见 不断更新
- cadence PCB EDIT:pcb设计当中增加以下关注点,提高产品的稳定性;
- 脉源信息
- java中堆和栈的区别