Java菜鸟学习笔记(23)--继承篇(二):继承与组合

组合是什么


1.继承和组合都是一种随思想渗透而下的编码方式,其根本目的都是为了复用类,减少重复代码


2.要实现一个类的复用,可以分为组合语法和继承语法


3.组合就是通过将一个对象置于一个新类中,将其作为新类的成员变量,组成 类的一部分。


4.继承和组合使用情况要随机应变


继承与组合区别


1.组合是在新类产生现有类的对象,组合出功能给更强的新类。


2.继承通过现有类的类型创建新类,并且功能在现有类的基础上进行功能上的扩展,实现更强的类。


继承语法

//1.用继承实现代码复用
package me.jicheng;

class Animal{
	
		//心脏跳动,仅供其他调用
		private void beat(){
			
				System.out.println("心脏跳动");
			}
		//呼吸
		public void breath(){
			
				beat();
				System.out.println("吸气呼气~~深呼吸~");
			}
	
	}
class Bird extends Animal{
	
		//多了一个奔跑
		public void fly(){
			
				System.out.println("在你的天上自由的飞翔~~");
			}
	}
	
class Wolf extends Animal{
	
		public void run(){
			
				System.out.println("12.88冲刺啊~");
			}
	
	}
public class Inherit{
	
		public static void main(String[] args){
			
				//Bird 对象
				Bird niao=new Bird();
				niao.fly();
				niao.breath();
				
				//Wolf狼
				Wolf lang=new Wolf();
				lang.run();
				lang.breath();
			
			}
	
	
	}


继承语法

//2.用组合实现代码复用
package me.zuhe;

class Animal{
	
	private void beat(){
		
			System.out.println("心脏跳动");
		}
	public  void breath(){
		
			beat();
			System.out.println("自由的呼吸");
		}
	
	}
class Wolf extends Animal{
	
	//把需要的类当作实例变量加入进来实现组合
	private Animal one;
	
	//构造器
	public Wolf(Animal one){
		
			this.one=one;
		}

	public void breath(){
		
			one.breath();
		}
		
	public void run(){
			System.out.println("runing...");
		}
	
	}
class Bird{
	
	private Animal one;
	
	public Bird(Animal one){
			this.one=one;
		}
	public void breath(){
			one.breath();
		}
	public void fly(){
			System.out.println("Fly...");
		}
	
	}

public class Composite{
	
	public static void main(String[] args){
		
			//创建Animal对象
			Animal my=new Animal();
			//创建Wolf对象并调用方法
			Wolf nima=new Wolf(my);
			nima.run();
			nima.breath();
			//创建Bird对象并调用方法
			Bird nimei=new Bird(my);
			nimei.fly();
			nimei.breath();
		}
	
	}

作者:YangGan
出处: http://blog.csdn.net/incyanggan
本文基于 署名 2.5 中国大陆 许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名Yanggan (包含链接).
原文地址:https://www.cnblogs.com/riskyer/p/3214982.html