人工智能 Python面向对象 学习总结之Python与Java的区别

前言

经过学习,对Python面向对象部分有了一定的了解。
总结记录:面向对象上Python与Java的部分区别

简述

从类、对象、特性三个层面来简述其部分区别
在这里插入图片描述

面向对象

PythonJava
定义class ClassName(object):passpublic class ClassName{}
类名要与文件名一致
属性在类中,方法外定义属性即可需要使用static修饰
方法使用@classmethod修饰
第一个形参一般为cls
需要使用static修饰
权限控制(类和对象中使用方式相同)通过属性或方法名控制
公有 public = ‘public’
私有 __private = ‘private’(两个下划线开头)
通过关键字控制
public,protected,default,private

python中还有静态函数,@staticmethod修饰,静态函数与类函数的区别是,静态函数不在形参中的得到类本身,一般用于逻辑上属于类,但并不需要进行类中属性和方法的操作

class ClassName(object):
    public = 'public'
    __private = 'private'

    @classmethod
    def class_method(cls):
        print(cls.__private)

    @staticmethod
    def static():
        print("Class Test")
public class ClassName {
    public static final String STR = "String";

    protected static void classMethod() {

    }

    private static String classMethod1() {
        return "";
    }

}

对象

PythonJava
创建Object()new Object()
属性__init__(self)方法中定义需要显示定义
方法就是函数的写法,第一个形参为self代表对象本身
转字符串方法为__str__(self)
权限修饰符、返回值、方法名组成。this关键字代表对象本身
转字符串方法为toString()

特性

PythonJava
封装--
继承在类的参数列表中声明基类
多继承(需注意mro)
通过extends关键字声明父类
单继承
多态--

MRO(Method Resolution Order):方法解析顺序,我们可以通过类名.__mro__或类名.mro()获得“类的层次结构”,方法解析顺序也是按照这个“类的层次结构”寻找。

class Father(object):
    def __init__(self, name):
        self.name = name
        self.car = 5

    def father_active(self):
        return self.name + "工地工作"


class Mother(object):
    def __init__(self, name):
        self.name = name
        self.house = 2

    def mother_active(self):
        return self.name + "厂子工作"


class Son(Father, Mother):
    def __init__(self, name):
        super().__init__(name)
        Mother.__init__(self, name)


f = Father("爸爸")
m = Mother('妈妈')
s = Son("儿子")
print(s.father_active())
print(s.mother_active())
print(f"儿子有{s.car}辆车")
print(f"儿子有{s.house}套房")
public class Father {
    private String name;
    protected int car = 5;

    public Father(String name) {
        this.name = name;
    }
    protected String fatherActive(Father father) {
        return father.name + "工地工作";
    }

}

// ----------------next file--------------------- 
  
public class Son extends Father{

    public Son(String name) {
        super(name);
    }
    public static void main(String[] args) {
        Son son = new Son("儿子");

        System.out.println(son.fatherActive(son));
        System.out.println("儿子有" + son.car + "辆车");
    }
}

心得:学完python的面向对象后,采用和Java进行对比的学习方式,更能加深印象,原理还是基本一样的,不过在一些语法表达上有区别

nRF24L01是一种低功耗2.4GHz无线通信模块,可以广泛应用于无线传感器网络、远距离数据传输等领域。nRF24L01模块的配对是指将两个或多个模块进行连接和通信的过程。 要进行nRF24L01的配对,需要以下步骤: 1. 硬件连接:首先,需要将两个nRF24L01模块与Arduino等主控设备相连接。其中一个模块作为发送端,另一个作为接收端。 2. 编程设置:使用相应的编程语言和开发环境,编写代码来控制nRF24L01模块的工作。发送端的代码负责将数据发送到接收端,接收端的代码负责接收和解析发送端的数据。 3. 地址匹配:nRF24L01模块有一个可配置的地址,包括发送地址(TX地址)和接收地址(RX地址)。在配对过程中,需要确保发送端和接收端的地址是一致的,以便正确地进行通信。 4. 信道设置:nRF24L01模块有多个信道可供选择。在进行配对时,需要确保发送端和接收端选择了相同的信道,以便它们能够在同一个率上进行通信。 5. 数据传输:通过编程设置发送端和接收端的工作模式和数据传输方式,可以实现数据的双向传输。发送端将需要传输的数据发送给接收端,接收端接收到数据后进行相应的处理或反馈。 6. 通信测试:完成以上步骤后,可以进行一些测试来验证nRF24L01模块的配对是否成功。可以发送一些简单的数据或指令,观察接收端是否能够正确接收并执行相应的操作。 通过以上步骤,可以实现nRF24L01模块的配对,使其能够进行有效的无线通信。在实际应用中,可以根据需要添加更多的功能和安全措施,以确保通信的稳定性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹏晓星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值