zoukankan      html  css  js  c++  java
  • 对象转型(casting); 多态; static(静态);单例模式

        对象转型:

      

    public class Animals {  //父类
    
    	private String lei;
    	private double weight;  //需要get,set一下,外界才可以调用
    	public Animals() {
    		
    		}
    	public Animals(String lei, double weight) {
    		super();
    		this.lei = lei;
    		this.weight = weight;
    	}
    	public void Print() {
    		System.out.println("动物种类" + lei);
    		System.out.println("重量" + weight);
    	}
    		
    	/*public void Sv () {
    		System.out.println("你好");
    	}*/
    		
    	public String getLei() {
    		return lei;
    	}
    	public void setLei(String lei) {
    		this.lei = lei;
    	}
    	public double getWeight() {
    		return weight;
    	}
    	public void setWeight(double weight) {
    		this.weight = weight;
    	}
    	
    }	
    

      

    public class Dog extends Animals {  //子类
    		private String shi;
    		
    		public Dog() {
    			
    		}
    		public Dog(String lei, double weight,String shi) {
    			super(lei, weight);   //引用的是父类里的lei,weight构造方法
    			this.shi = shi;
    		}
    		public void Print () {  //重写父类里的方法
    			System.out.println("动物种类是" + super.getLei()); //因为是继承,super之后就可以获取
    			System.out.println("重量" + super.getWeight());
    			System.out.println("狗的食物"+ shi);
    		}
    		
    		
    		public String getShi() {
    			return shi;
    		}
    		public void setShi(String shi) {
    			this.shi = shi;
    		}
    
    }
    

      

    public class Main {
    
    	public static void main(String[] args) {
    		//父类的引用指向子类对象
    		Animals an = new Dog();  //实例化Animals
    		an.setLei("狗");  
    		an.setWeight(15);
    		
    		/*an.Print();*///父类里的方法,要想设置食物,走下一步强转
    		Dog dg = (Dog) an;  //子类Dog新增的属性shi和方法,不能直接访问,要强转
    		dg.setShi("骨头");
    		dg.Print();
    
            }
    
    }
        
    

    效果:

        多态:

    public class Test {
    public void Printf(Animals an) { //多态 if(an instanceof Dog) { //如果an这个对象是一种狗, //instanceof关键字是用来判断变量an是不是这个类或是这个类的子类 Dog x =(Dog)an; //强转成狗 x.Print(); //输出Dog的构造方法 } else if(an instanceof Cat ) { Cat c = (Cat)an; //强转成猫 c.Print();//输出Cat的构造方法 }else { an.Print(); //animals的方法 } }

    }
    //多态
    		Dog dog = new Dog("狗",15,"骨头");  //先实例化一个Dog
    		
    		Cat cat = new Cat("猫",5,"老鼠");
    			
    		Test t = new Test();
    		t.Printf(dog);  //dog就是an的一种
    		t.Printf(cat);
    

        静态(static):

    public class Dog extends Animals {  //子类
    
                	//static 静态
    		private String name;
    		private int age;
    		public static  int num;  //static
    		 
    		
    		public Dog() {  //给num一个构造方法
    			num++;
    		}
    		public void Print () {
    			System.out.println("这是第" + num + "只狗");
    		}
    		public String getName() {
    			return name;
    		}
    		public void setName(String name) {
    			this.name = name;
    		}
    		public int getAge() {
    			return age;
    		}
    		public void setAge(int age) {
    			this.age = age;
    		}
    
    }
    
    //static 的静态利用
    		Dog d1 = new Dog();
    		d1.Print(); //输出第几只狗
    		System.out.println(Dog.num);  //static 直接拿类名 . num 输出,输出第一个狗
    		Dog d2 = new Dog();
    		System.out.println(Dog.num); //输出第二只狗
    		d2.Print();
    

        单例模式:

    public class HelloWorld {
    		private static HelloWorld helloworld;
    		private HelloWorld () {
    			
    		}
    		private int count;
    		public static HelloWorld getinstance() {  //static的不用实例化,直接用
    			if (helloworld == null ) {    //如果helloworld是空的话
    				helloworld = new HelloWorld();  //给helloworld实例化
    			}
    			return helloworld;    //返回helloworld
    		}
    		public int getCount() {
    			return count;
    		}
    		public void setCount(int count) {
    			this.count = count;
    		}
    		
    }
    
    //单例模式
    		HelloWorld hw = HelloWorld.getinstance();
    		System.out.println(hw.getCount());  //输出的返回值是为0,因为没有给其赋值
    		HelloWorld hw2 = HelloWorld.getinstance();
    		hw2.setCount(5);
    		System.out.println(	hw.getCount());*///输出的是5,因为hw与hw2指向的位置相同
    
  • 相关阅读:
    Android数据存储之SQLCipher数据库加密
    Android数据加密之Aes加密
    Android自定义控件之自定义组合控件
    Android自定义控件之自定义属性
    Android自定义控件之基本原理
    Java设计模式之代理模式(Proxy)
    Android注解使用之使用Support Annotations注解优化代码
    Java学习之注解Annotation实现原理
    Android数据存储之GreenDao 3.0 详解
    Android性能优化之App应用启动分析与优化
  • 原文地址:https://www.cnblogs.com/zuo72/p/7880135.html
Copyright © 2011-2022 走看看