zoukankan      html  css  js  c++  java
  • java多态

    多态

    同一个对象 体现出来的多种不同形态(身份) 将同一种行为表现出不同效果;

    要想实现多态的效果 需要先有继承关系

    体现:

      1.父类类型的引用 指向 子类的对象

      Person p=new Teacher();//向上转型

      2.该引用只能调用父类中定义的属性和方法;

      3.如果子类中将父类的方法重写,那么调取方法后执行的结果是子类重写之后的那个结果;

      如果父类与子类有同名的属性 调用父类的属性;(属性无重写,方法可以有重写)

      如果父类与子类有同名的方法(重载) 执行子类重写之后的方法;

      4.如果想要调用子类独有属性或方法

    需要将类型还原回真实类型 强制类型转化  造型  向上转型 向下转型

      Teacher t=(Teacher)p; //向下转型

      5.造型时(强制向下转型时)可能会出现一个运行时异常

        ClassCastException //造型异常;

        可以用if(p instanceof Teacher){//对象是否属于后面类型

        }

    =============================================================

     

     设计模式--行为模式--策略模式;

     

    public abstract class Person{	
    	protected String name;
    	
    	public void setName(String name){
    		this.name=name;
    	}
    	public String getName(){
    		return name;
    	}
    	
    	public abstract void callNumber();
    	public abstract void transact();
    	public abstract void leave();
    }
    

     

    public class Bank{
    	/*
    	public void welcome(OldMan om){
    		System.out.println(om.getName()+"客户进入银行");
    		om.callNumber();
    		om.transact();
    		om.leave();
    	}
    	
    	public void welcome(YoungMan om){
    		System.out.println(om.getName()+"客户进入银行");
    		om.callNumber();
    		om.transact();
    		om.leave();
    	}
    	
    	public void welcome(Toff om){
    		System.out.println(om.getName()+"客户进入银行");
    		om.callNumber();
    		om.transact();
    		om.leave();
    	}
    	*/
    	public void welcome(Person om){
    		System.out.println(om.getName()+"客户进入银行");
    		om.callNumber();
    		om.transact();
    		om.leave();
    	}
    	
    }
    
    public class Test{
    	public static void main(String[] args){
    		Bank bank=new Bank();
    		//Person omm=new Toff("突突");
    		//Person omm=new OldMan("老张");
    		Person omm=new YoungMan("少年");
    		bank.welcome(omm);
    		System.out.println();
    		/*
    		Bank bank=new Bank();
    		OldMan omm=new OldMan("张大爷");
    		bank.welcome(omm);
    		System.out.println();
    		
    		
    		YoungMan ommk=new YoungMan("小张");
    		bank.welcome(ommk);
    		System.out.println();
    		
    		
    		Toff ommkt=new Toff("土豪");
    		bank.welcome(ommkt);
    		*/
    	}
    }
    

      

    public class OldMan extends Person{	
    	//private String name;
    	public OldMan(){};
    	public OldMan(String name){
    		this.name=name;
    	}//构造方法;
    	/*
    	public void setName(String name){
    		this.name=name;
    	}
    	public String getName(){
    		return name;
    	}
    	*/
    	public void callNumber(){
    		System.out.println("在哪叫号?");
    	}
    	public void transact(){
    		System.out.println("拿出存折");
    	}
    	public void leave(){
    		System.out.println("慢慢离开");
    	}
    }
    

      

    public class YoungMan extends Person{	
    	//private String name;
    	public YoungMan(){};
    	public YoungMan(String name){
    		this.name=name;
    	}//构造方法;
    	/*
    	public void setName(String name){
    		this.name=name;
    	}
    	public String getName(){
    		return name;
    	}
    	*/
    	
    	public void callNumber(){
    		System.out.println("柜台取号");
    	}
    	public void transact(){
    		System.out.println("拿出银行卡");
    	}
    	public void leave(){
    		System.out.println("离开");
    	}
    }
    

      

      

    public class Toff extends Person{	
    	//private String name;
    	public Toff(){};
    	public Toff(String name){
    		this.name=name;
    	}//构造方法;
    	/*
    	public void setName(String name){
    		this.name=name;
    	}
    	public String getName(){
    		return name;
    	}
    	*/
    	
    	public void callNumber(){
    		System.out.println("VIP室");
    	}
    	public void transact(){
    		System.out.println("拿出黑卡");
    	}
    	public void leave(){
    		System.out.println("帅气离开");
    	}
    }
    

     

    越努力,越幸运!!! good good study,day day up!!!
  • 相关阅读:
    vue组件的通信
    vue基础
    vue项目总结
    路由(4)传参
    路由(3)
    第一次作业
    JAVA-2.0-homework
    JAVA-2.0-上机
    JAVA-1.9-homework
    JAVA-1.9-上机
  • 原文地址:https://www.cnblogs.com/canglongdao/p/12878742.html
Copyright © 2011-2022 走看看