zoukankan      html  css  js  c++  java
  • 面向对象第5课——转型

    package zhuanxing;
     									///转型课件(在继承的基础上转型)
    public class father {
    	public void work()
    	{
    		System.out.println("我劳动我光荣");
    	}
    
    }
    
    
    
    package zhuanxing;
    
    public class son extends father {
    	//父类方法的重写
    	public void work()
    	{
    		System.out.println("我不想工作");
    		
    	}
    	public void sing()
    	{
    		System.out.println("我喜欢唱歌");
    	}
    	//当不确定是什么类型时用Object然后在向下转型
    	public Object geto()
    	{
    		return "123456";
    	}
    
    }
    
    
    
    package zhuanxing;
    
    public class fathertest {
    
    	public static void main(String[] args) {
    		
    
    		father f=new father();
    		son s=new son();
    		s.work();
    		//向上转型,左到右,son转成father,(最上方是原始类)
    		father f1=new son();
    		f1.work();
    	//f1.sing(); 错误, 不可以继承多余father的东西
    		//向下转型
    		son s1=(son)f1;
    		s1.work();
    		s1.sing();
    
    		//Object能装下所有类型的数据类型,先向上转型,在向下转型
    		//向上转
    		Object obj=new father();
    		Object[] ary=new Object[5];
    		ary[0]=123;
    		ary[1]="asd";
    		ary[2]=new father();
    		ary[3]=f1;
    		ary[4]=s1;
    		//向下转
    		//判断instanceof,判断x,是不是y对象的类型
    		if(ary[4] instanceof son)
    		{	
    		son obj1=(son)ary[4];
    		obj1.sing();
    		}
    		else
    		{
    		System.out.println("类型不符");	
    		}
    		
    //		if(ary[2] instanceof father)
    //		{	
    //			son obj1=(son)ary[2];
    //			obj1.work();
    //		}
    //		else
    //		{
    //			System.out.println("类型不符");	
    //		}
    		//泛型
    	}
    
    }
    									//转型总结
    //转型:
    //	      向上转型——隐式转换——把子类对象转换成父类(1.隐藏了子类自己的成员和方法,只能访问到父类的成员和方法。2.如果在子类中父类的方法被重写就调用子类中的重写方法)
    //	      向下转型——强制转    ——把父类对象转换成子类(1.一般先有向上转型为前提,才可以进行向下转型。2.如果类型不符或不是子类,就会转换失败,可以用instanceof判断)
    //转型也是多态的一种表现形式
    //操作符(instanceof):格式为:实例   instanceof 类名,返回结果:该实例是否是该类或子类的实例。
                                         //final关键字(终态的)
    //可以放到变量前面,表示常量,只能被赋值一次
    //放到lcass(类)的前面,类不可以被继承
    //放到方法前,不能被继承,重写覆盖。
    //放到构造方法前不可以,不可以被重写。
    

      

  • 相关阅读:
    贝塞尔曲线
    那些有内容的文章——记录网址
    Mac 下 SVN 的使用
    让时间不再随系统设置而改变
    iOS 关闭图片渲染
    iOS的AssetsLibrary框架访问所有相片
    iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
    Linux 第一次学习笔记
    java第四次实验报告
    java第三次实验报告
  • 原文地址:https://www.cnblogs.com/zhangnaitao/p/5907904.html
Copyright © 2011-2022 走看看