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;
}
}
java和python对比----实例化的对象属性:的更多相关文章
- 对比java和python对比
对比java和python 对比java和python 2011年04月18日 1.难易度而言.python远远简单于java. 2.开发速度.Python远优于java 3.运行速度.java远优于 ...
- Java中创建(实例化)对象的五种方式
Java中创建(实例化)对象的五种方式1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运用反 ...
- java和python对比
一:解释性和编译型 梳理 编译型:源代码经过编译直接变为二进制的机器语言,每次都可以直接重新运行不需要翻译.典型的就是c语言. 解释性:java和python都是解释型,源代码经过编译变为字节码文件, ...
- python遍历并获取对象属性--dir(),__dict__,getattr,setattr
一.遍历对象的属性: 1.dir(obj) :返回对象的所以属性名称字符串列表(包括属性和方法). for attr in dir(obj): print(attr) 2.obj.__dict__:返 ...
- java和python对比----1:
对计算来说: java 除法: 3/4 ==0; pyhton 除法: 3/4 ==0 3//4==0.75
- java 通过反射获取和设置对象属性值
public static Object parseDate(Object object){ SimpleDateFormat sdf = new SimpleDateFormat("yyy ...
- python 类实例化,修改属性值
class User(object): def __init__(self, first_name, last_name, login_attempts): self.first_name = fir ...
- Mockito 中被 Mocked 的对象属性及方法的默认值
在 Java 测试中使用 Mockito 有段时日了,以前只是想当然的认为 Mock 的对象属性值和方法返回值都是依据同样的规则.基本类型是 0, 0.0, 或 false, 对象类型都是 null, ...
- JavaScript 获取对象属性和方法
ShineJaie 原创整理,转载请注明出处. 一.获取对象属性和方法 Object.keys() 返回对象的可枚举属性和方法的名称数组. Object.getOwnPropertyNames() 返 ...
随机推荐
- MySQL - GROUP BY和HAVING的用法
按姓名分组查询 SELECT username, COUNT(username) AS '人数' FROM t_user GROUP BY username 只查询姓名相同的人 SELECT user ...
- Mybatis(一)入门介绍
一.MyBatis的发展 MyBatis 是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation迁移到google code, 并且改名M ...
- python初级实战-----关于邮件发送问题
python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用.smtplib模块主要负责发送邮件,email模块主要负责构造邮件. sm ...
- 20145215《网络对抗》Exp4 恶意代码分析
20145215<网络对抗>Exp4 恶意代码分析 基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些,用 ...
- 【转】MySQL用户管理及SQL语句详解
[转]MySQL用户管理及SQL语句详解 1.1 MySQL用户管理 1.1.1 用户的定义 用户名+主机域 mysql> select user,host,password from mysq ...
- Gitlab 备份迁移恢复报错gtar: .: Cannot mkdir: No such file or directory
1. 版本信息 OS: centos 6.9 Gitlab: gitlab-ce.10.7.4 gitlab-ce.10.8.0 gitlab-ce.10.8.3 gitlab-ce.10.8.4 2 ...
- 使用html2canvas生成一张图片
注意事项: 1.图片生成问题,生成图片测试机正常传到正式机,无法生成!!====>>原因是正式机中,使用的是CDN加载,导致图片跨域,而canvas不支持图片跨域!!!==>> ...
- Python3学习笔记01-环境安装和运行环境
最近在学习Python3,想写一些自己的学习笔记.方便自己以后看,主要学习的资料来自菜鸟教程的Python3教程和廖雪峰官方网站的Python教程. 1.下载 1)打开https://www.pyth ...
- 用函数SendARP()获取局域网计算机的MAC地址
sendARP 31 说明对方没有开机,我们的函数检测不到它, 1784 说明的给函数的最后一个参数的值是0,或你的给的值与你给的缓存区大小不符合. 如果返回31不在线,则最后一个参数指针指向的值赋值 ...
- python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查
python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...