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;
}
}

  

java和python对比----实例化的对象属性:的更多相关文章

  1. 对比java和python对比

    对比java和python 对比java和python 2011年04月18日 1.难易度而言.python远远简单于java. 2.开发速度.Python远优于java 3.运行速度.java远优于 ...

  2. Java中创建(实例化)对象的五种方式

    Java中创建(实例化)对象的五种方式1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运用反 ...

  3. java和python对比

    一:解释性和编译型 梳理 编译型:源代码经过编译直接变为二进制的机器语言,每次都可以直接重新运行不需要翻译.典型的就是c语言. 解释性:java和python都是解释型,源代码经过编译变为字节码文件, ...

  4. python遍历并获取对象属性--dir(),__dict__,getattr,setattr

    一.遍历对象的属性: 1.dir(obj) :返回对象的所以属性名称字符串列表(包括属性和方法). for attr in dir(obj): print(attr) 2.obj.__dict__:返 ...

  5. java和python对比----1:

    对计算来说: java 除法: 3/4 ==0; pyhton 除法: 3/4 ==0 3//4==0.75

  6. java 通过反射获取和设置对象属性值

    public static Object parseDate(Object object){ SimpleDateFormat sdf = new SimpleDateFormat("yyy ...

  7. python 类实例化,修改属性值

    class User(object): def __init__(self, first_name, last_name, login_attempts): self.first_name = fir ...

  8. Mockito 中被 Mocked 的对象属性及方法的默认值

    在 Java 测试中使用 Mockito 有段时日了,以前只是想当然的认为 Mock 的对象属性值和方法返回值都是依据同样的规则.基本类型是 0, 0.0, 或 false, 对象类型都是 null, ...

  9. JavaScript 获取对象属性和方法

    ShineJaie 原创整理,转载请注明出处. 一.获取对象属性和方法 Object.keys() 返回对象的可枚举属性和方法的名称数组. Object.getOwnPropertyNames() 返 ...

随机推荐

  1. script标签

    script 元素既可以包含脚本语句,也可以通过 src 属性指向外部脚本文件.默认情况下script标签的会阻止文档渲染,相关脚本会立即下载并执行. 属性 在HTML5中script主要有以下几个属 ...

  2. ANSI C、ISO C、Standard C联系与区别

    做C语言开发的人,经常会遇到“ANSI C”.“ISO C”与“Standard C”三种术语,经常会让人傻傻分不清楚.博主之前按也是搞不清三者的关系,于是某天下定决心,一定要搞清楚三者的关系,先百度 ...

  3. MSSQL无法启动-原来电脑登录密码改了,重启后要设置

    Sql Server (MSSQLSERVER) 服务无法启动 - 晓菜鸟 - 博客园  http://www.cnblogs.com/52XF/p/4230578.html  --摘抄如下: 一.是 ...

  4. [转载]tensorflow中使用tf.ConfigProto()配置Session运行参数&&GPU设备指定

    tf.ConfigProto()函数用在创建session的时候,用来对session进行参数配置: config = tf.ConfigProto(allow_soft_placement=True ...

  5. Springboot的日志管理&Springboot整合Junit测试&Springboot中AOP的使用

    ==============Springboot的日志管理============= springboot无需引入日志的包,springboot默认已经依赖了slf4j.logback.log4j等日 ...

  6. linux 安装图行界面

    centos6的环境中 代码:[root@ebs122 sysconfig]#yum groupinstall "Desktop" 使用 init 5命令进入图形化界面,如果成功的 ...

  7. 网络爬虫re模块的findall()函数

    findall()函数匹配所有符合规律的内容,并以列表的形式返回结果. a = '"<div>指数' \ '</div>"' word = re.finda ...

  8. np.nonzero()函数用法

    返回数组中不为0的元素的下标. 数组中元素可为布尔.整型和浮点型,返回值为元祖 一.一维数组 1.数组元素为布尔类型 a=np.array([True,False,True,False]) b=np. ...

  9. matlab处理手写识别问题

    初学神经网络算法--梯度下降.反向传播.优化(交叉熵代价函数.L2规范化) 柔性最大值(softmax)还未领会其要义,之后再说 有点懒,暂时不想把算法重新总结,先贴一个之前做过的反向传播的总结ppt ...

  10. C++游戏开发需要阅读的书籍

    如果要自学游戏程序开发的话,可以看看下面的,呵呵. 游戏开发资料(PDF书都是中文版的,非英文,很多是本人自己扫描制作,从未网上发布过,所以独家啦):  1.Gamebryo 2.2游戏引擎(盛大.腾 ...