zoukankan      html  css  js  c++  java
  • java和python对比----实例化的对象属性:

    python

    可以直接对实例化的属性进行赋值

    class Test():
        name = "小明"       
       def __init__(self):{
        //self.name = name;  不能调用, java如果设置了静态字段的话,是可以直接调用的,
      }
    a = Test()     #小明
    b = Test()      #小明
    c = Test()      #小明
    print(a.name)
    print(b.name)
    print(c.name)
    print("--------")
    a.name = "小红"   //表示只给当前的实例添加了一个属性,name='小红',不影响其他的实例
    print(a.name)  #小红
    print(b.name)  #小明
    print(c.name)  #小明
    

      

      

      

    java

    public class Demo {
        public static void main(String[] args){
        	Test a = new Test("小明");
        	Test b = new Test("小红");
        	Test c = new Test("小花");
        	System.out.println(a.getInfo());//由于设置了private 所以不能直接调用a.name
        	
        	System.out.println(a.country);//中国  没有设置 private 所以可以 直接调用a.country
        	System.out.println(b.country);//中国
        	System.out.println(c.country);//中国
        	a.country = "新中国";          //改变静态字段值,即改变了类字段,其他的实例,都用的是这个字段
        	System.out.println(a.country);//新中国
        	System.out.println(b.country);//新中国
        	System.out.println(c.country);//新中国
    } 
    }
    
    class Test{
    	private String name;
    	static String country = "中国";
    	public Test(String name){  //构造方法
    			this.name = name;
    			this.country = country; //可以去掉,没有任何效果 
    		}
    	public String getInfo(){
    		return this.name;  //由于设置了私有字段(private),所以需要开辟接口,用来获取字段
    	}
    }
    

      

    注意

    如果属性为静态字段,构造方法中由对该静态字段重新赋值,修改的还是静态字段,并没有给实例创建新字段;

    public class Demo {
        public static void main(String[] args){
        	Test a = new Test("小明","z");
        	Test b = new Test("小红","d");
        	Test c = new Test("小花","x");
        	
        	System.out.println(a.country);//x  //全部为最后一个创建实例时,设置的国家
        	System.out.println(b.country);//x
        	System.out.println(c.country);//x
        	a.country = "新中国";//直接将静态字段改变了
        
        
        	System.out.println(a.country);//新中国
        	System.out.println(b.country);//新中国
        	System.out.println(c.country);//新中国
    } 
    }
    
    class Test{
    	private String name;
    	static String country = "中国";
    	public Test(String name,String country){  
    			this.name = name;
    			this.country = country;
    		}
    }
    

    如果需要每一个实例都有自己的国家,传入的字段不要设置为静态字段即可

    public class Demo {
        public static void main(String[] args){
        	Test a = new Test("小明","z");
        	Test b = new Test("小红","d");
        	Test c = new Test("小花","x");
        	
        	System.out.println(a.country);//z
        	System.out.println(b.country);//d
        	System.out.println(c.country);//x
        	a.country = "新中国";//直接将静态字段改变了
        
        
        	System.out.println(a.country);//新中国
        	System.out.println(b.country);//d
        	System.out.println(c.country);//x
    } 
    }
    
    class Test{
    	private String name;
    	String country = "中国";
    	public Test(String name,String country){  
    			this.name = name;
    			this.country = country;
    		}
    	public String getInfo(){
    		return this.name;  //由于设置了私有字段(private),所以需要开辟接口,用来获取字段
    	}
    }
    

     

    java可以向python一样直接给实例添加属性,前提先声明,不能是私有字段,[也最好不要是静态字段,不然多个实例,会共享这个字段]

    public class Demo {
        public static void main(String[] args){
        Test t = new Test();
        t.name = "ddd";
        System.out.println(t.name);
    } 
    }
    class Test{
    	String name;
    }
    

      

    此时的效果和python一样了

    public class Demo {
        public static void main(String[] args){
        	Test a = new Test("小明");
        	Test b = new Test("小红");
        	Test c = new Test("小花");
        	
        	System.out.println(a.country);//中国
        	System.out.println(b.country);//中国
        	System.out.println(c.country);//中国
        	
        	a.country = "新中国";           //给当前的实例添加一个新属性,不影响其他的实例
        	System.out.println(a.country);//新中国
        	System.out.println(b.country);//中国
        	System.out.println(c.country);//中国
    } 
    }
    class Test{
    	private String name;
    	String country = "中国";
    	public Test(String name){  
    			this.name = name;
    		}
    }
    

      

  • 相关阅读:
    向量旋转公式推导
    atan函数与atan2函数
    UVALive 7040 Color (容斥原理+逆元+组合数+费马小定理+快速幂)
    关于source insight、添加.s和.S文件,显示全部路径、加入项目后闪屏幕
    linux内核设计与实现--进程调度 系统调用
    linux内核设计与实现--进程管理
    linux命令行与shell脚本编程大全---bash shell命令
    linux内核设计与实现--从内核出发
    Linux内核学习之路
    NAND FLASH均衡算法笔记(转)
  • 原文地址:https://www.cnblogs.com/yanxiaoge/p/10658660.html
Copyright © 2011-2022 走看看