zoukankan      html  css  js  c++  java
  • 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 (包含链接).
  • 相关阅读:
    PC-BSD 9.2 发布,基于 FreeBSD 9.2
    Attic 0.8.1 发布,备份程序
    Apache Lucene 4.5 发布,Java 搜索引擎
    Linux Kernel 3.11.4/3.10.15/3.4.65/3.0.99
    Lucene 查询工具 LQT
    Rubinius 2.0 发布,Ruby 虚拟机
    Golang通过Thrift框架完美实现跨语言调用
    微软再次要求Google审查官方链接 称将进行调查
    TCPDF 6.0.036 发布,PHP 的 PDF 操作包
    libnode 0.4.0 发布,C++ 语言版的 Node.js
  • 原文地址:https://www.cnblogs.com/riskyer/p/3214982.html
Copyright © 2011-2022 走看看