Python中的类与Java有什么不同?

2024-11-28 18:25:00
推荐回答(3个)
回答1:

同:
都有类变量,Java中也叫静态变量
都有构造函数
都有实例方法
异:
语法写的时候Python class名称后面带(),而Java声明类需要指定类的类型
java中的实例变量需要声明,而Python中不用声明直接在构造函数中用self.name指定就可以了
python貌似没有类方法
声明一个对象的时候Java 在声明一个新的对象的时候,先执行类变量的加载,如果有父类,先加载父类的变量;然后执行实例变量的加载;然后执行构造函数,如果父类有默认的构造函数,先执行父类的构造函数,然后再执行子类的构造函数 如果父类不存在默认的构造方法,则子类必须通过super调用父类的构造方法 |||||||||||python不会默认执行父类的构造方法,除非指定super().__init__()
Java中.java的名字和该文件中的类必须是同名的 例如Car.java 中必须有一个pulic class Car;python中文件名和文件中类的名字不用对应,例如my_car.py中可以写一个class Car(),并且一个.py中文件中可以出现多个并列的类
python中一个类可以作为实例变量

回答2:

JAVA和Python的类的区别
前言:JAVA相对C++而言 比较简单,但是相对Python而言是一个语法比较严格的语言,声明的类和方法,父类,继承等都有非常严格的规则。JAVA最初用来写嵌入式。相反,Python最初被设计用来做自动化脚本,Python语言灵活,是一种面向对象的动态多类型语言。
不同:
1.语法 上,Python写类Class名称后面需要带(),而java是方法带();
2.java中的实例变量需要声明,而Python不用声明直接在构造函数中用self.name指定。
3.在声明一个对象时,JAVA先执行类变量的加载,若又父类则先加载父类的 变量然后执行实例变量的加载,然后再执行构造函数,如果有父类有构造函数,则先执行父类的再执行子类的;如果父类不存在构造函数,则需要用super调用父类。而Python不会默认先执行父类,重复一遍!Python不会默认先执行父类(的构造方法)!!!如果想要先执行父类的,人那么必先指定super(). init. ()
4.java中的文件名必须和类名同名,例如People.java,其主类必须为public class People,而python中的文件名和类名不必一致。如 my_apple.py中可以写成class Apple() ;
基础部分的区别就这些,参考链接:
https://www.cnblogs.com/nadech/p/9599086.html(博客园)

回答3:

1.类属性和成员方法的访问控制
Java:private/protected/public三种修饰符依次限定成员的访问控制权限,权限由低到高。
Python:相较于Java严格的权限控制,python只有public/non-public两种限定,并且python没有明显的修饰符,以双下划线(‘__’)开头的属性为non-public,而其他则为public。
2.类定义与编译单元(文件)的关系
Java中具有public class和class两种不同的形式,而python则没有关于类的限定,这个不同之处体现在工程上就是,Java中public类必须定义在同名文件中,因此一个文件只能定义一个public类。而python则没有这种限制,它可以在一个模块中定义多个类。
3.继承
Python可以多继承,而Java则不允许多继承,如果一个类涉及到与多个其他类存在继承关系时,通常会设计interface来替代class,关于这种机制的产生就不得不引入下面的多态。
4.多态
我们学习过多继承都知道“钻石问题”会导致歧义,因此Java利用interface这种机制来避免歧义,也就是同样的方法在不同的类中有不同的实现,而python则采用“duck type”形式来达到相似于接口的目的。