Python Java Scala 区别
本文仅从语法知识点上阐述三者之间的区别,因为该三种语言在现在工作中处理大数据时用的较多,简单记录一下,并逐步丰富与巩固
1. 基本数据结构用法
1.1 Array 数组
I. Python
主要是见于Numpy,同时Pandas中的DataFrame一起处理数据
II.Java
III.Scala
1.2 List 列表
I. Python
II.Java
III.Scala
1.3 Set集合
I. Python
II.Java
III.Scala
1.4 Dict字典、Map映射
I. Python
II.Java
III.Scala
2. 流程控制语句
2.1 if/else
2.2 while/for
I. Python
II.Java
III.Scala
2.4 switch(Java)与match(Scala)
I. Python
使用if/else实现
II.Java
III.Scala
3. 面向对象
1. 类是抽象的,具有相同属性和方法(行为)的集合
2. 对象是具体的,具有某些属性和方法(行为)的
3. 创建的对象的过程,叫实例化
3.1 类的初始化或类的构造函数
I. Python
II.Java
III.Scala
3.2 类的访问控制
主要涉及 public、protect、privite在父类和子类中的访问范围
Public: 所有类都可见;三种语言概念一致
Protect: python与scala当前类及子类都可以访问,java是当前类及子类都可以访问,同时所在的同名的包中的类也可以访问
Privite: 仅限当前类,子类不可访问,且不可以被重写;三种语言概念一致
I. Python
Public:变量不是_、__开头
Protect:_ 单下划线表示, 例如: _instance
Privite:__双下划线表示例如:__instance
II.Java
略
III.Scala
略
3.3 类的属性与方法
I. Python
有静态属性/方法,实例(动态)属性/方法,类属性/方法, 且都可以被重写
II.Java
有静态属性/方法,实例(动态)属性/方法
静态属性/方法不能被直接重写,实例属性/方法需要在构造函数中才能重写
III.Scala
没有静态属性/方法,动态属性/方法的概念
但是有实例属性/方法(相当于实例属性/方法) 和 对象属性/方法(相当于静态属性/方法),且都可以被重写
3.4 接口
I. Python
通过定义类实现,方法体可有可无
II.Java
通过interface定义实现,且无方法体,一般仅定义方法,因为接口中定义的属性后不能被重写
III.Scala
通过trait定义实现,方法体可有可无
3.5 继承
三者概念基本一致:
1).继承了父类的基本属性和方法
2).可以继续实现自己的属性和方法
3).方法重写:同名函数重写,用另一种实现方案实现父类的方法
I. Python
有单继承、多重继承、多层继承,都是通过class类本身定义
II.Java
有单继承、多层继承,通过class类本身定义
但多重继承是通过继承多个接口即多个interface
III.Scala
同Java概念
3.6 重写与重载
重写:子类继承父类后对父类的属性或方法进行重写,
同时基类的私有方法能被子类重写
重载:同一个类中,方法名相同,但是参数不一样(参数类型、数量)
I. Python
仅重写,没有重载
II.Java
静态字段不能被重写,实例方法仅在构造函数中才能被重写
III.Scala
必须使用override修饰
3.7 多态
多态:
目的是为了让代码更加,降低耦合
有继承或实现特质(接口)
父类引用指向子类对象或接口指向实现类
方法需要重写
三者概念一致, 略
I. Python
II.Java
III.Scala
原文:https://www.cnblogs.com/satansz/p/13053199.html