首页 > 其他分享 >5.9

5.9

时间:2024-05-09 22:55:22浏览次数:27  
标签:Java name Python 5.9 Animal public speak

今天继续进行python实验,学习到了python与java在类的定义、继承、多态等方面的异同。

Python和Java都是面向对象的编程语言,它们在类的定义、继承、多态等方面有相似之处,但也存在一些显著差异。下面通过具体例子来比较这两种语言在面向对象编程上的异同,并总结Python面向对象编程的一些原则和注意事项。

类的定义

Python 示例:

1class Animal:
2    def __init__(self, name):
3        self.name = name
4
5    def speak(self):
6        pass
7
8class Dog(Animal):
9    def speak(self):
10        return self.name + " says Woof!"
11
12dog = Dog("Rex")
13print(dog.speak())  # 输出: Rex says Woof!

Java 示例:

1public class Animal {
2    private String name;
3
4    public Animal(String name) {
5        this.name = name;
6    }
7
8    public void speak() {
9    }
10}
11
12public class Dog extends Animal {
13    public Dog(String name) {
14        super(name);
15    }
16
17    @Override
18    public void speak() {
19        System.out.println(this.name + " says Woof!");
20    }
21}
22
23public class Main {
24    public static void main(String[] args) {
25        Dog dog = new Dog("Rex");
26        dog.speak();  // 输出: Rex says Woof!
27    }
28}

异同分析:

相同点: 都使用关键字class定义类,支持构造函数(Python中为__init__,Java中直接与类名同名),并可以通过继承父类来复用代码。

不同点: Python中方法定义不需要返回类型声明,也没有访问修饰符(如Java中的public、private)。Java中则需要明确指定方法的返回类型,并且鼓励使用访问修饰符来控制成员的可见性。

继承

异同分析:

相同点: 都支持单继承或多继承(Python支持多重继承,Java通过接口实现类似功能)。

不同点: 在Java中,一个类只能继承一个父类,但可以通过实现多个接口来达到类似多继承的效果。Python则直接支持一个类继承多个类。

多态

Python 示例:

1class Cat(Animal):
2    def speak(self):
3        return self.name + " says Meow!"
4
5animals = [Dog("Rex"), Cat("Whiskers")]
6
7for animal in animals:
8    print(animal.speak())

Java 示例:

1public class Cat extends Animal {
2    public Cat(String name) {
3        super(name);
4    }
5
6    @Override
7    public void speak() {
8        System.out.println(this.name + " says Meow!");
9    }
10}
11
12// 在Main类的main方法中添加Cat对象并遍历调用speak方法

异同点:

相同点: 都支持方法的重写(Python中的override,Java中的@Override注解),实现多态。

不同点: 语法上略有不同,但核心概念一致,即子类可以重写父类的方法,使得在运行时能够根据对象的实际类型来调用相应的方法。

Python面向对象编程原则和注意事项

简洁性: Python鼓励简明的代码风格,尽量使用清晰的命名和简洁的逻辑结构。

鸭子类型: Python是动态类型语言,更多依赖于“如果看起来像鸭子,叫声像鸭子,那么它就是鸭子”的理念,而不是严格的类型检查。

避免过早优化: 初期应关注代码的可读性和可维护性,而不是过度优化性能。

使用@property装饰器: 对于类的属性访问,推荐使用@property装饰器来定义getter和setter,这样可以保持代码的整洁和Pythonic。

异常处理: 适当使用异常处理来增强程序的健壮性,Python中使用try-except语句。

模块化和包: 利用Python的模块和包系统组织代码,提高代码的重用性和可管理性。

综上所述,Python与Java在面向对象编程的核心概念上是相似的,但在语法风格、动态静态类型、以及某些特定功能(如多重继承)上有各自的特点。Python编程时应注重代码的简洁性和易读性,同时利用其动态语言的特性来灵活设计类和实现多态。

 

标签:Java,name,Python,5.9,Animal,public,speak
From: https://www.cnblogs.com/zzqq1314/p/18183264

相关文章

  • 5.9 T2 推式子的过程
    和题解的做法有些不同,不知道为什么,但是能够通过。首先按题解的做法先将式子除以\(z^2\)。令\(\frac{y}{z}=a,\frac{x}{z}=b\)。有:\[\begin{aligned}\frac{x^2}{z^2}-\frac{xy}{z^2}-\frac{y^2}{z^2}+\frac{y}{z}+1-\frac{x}{z}=0\\-a^2-ab+b^2+a+1-b=0\end{aligned}\]题解......
  • 闲话 5.9 湖南省集 为了你唱下去
    同步考场上被卡常乐,有点难绷。和题解不太一样,但是比较爆。令\(a=\fracyx,b=\fraczx\),则:\[a,b\in\Q,b^2+(a-1)b+1-a-a^2=0\]这里的想法是解出有理数\(b\)。有:\[\Delta=\sqrt{5a^2+2a-3}\]那么\(\sqrt{5a^2+2a-3}\in\Q\)。设\(a=\fraccd,c,d\in\Z^+,c\botd\),得到:......
  • VS2017+QT5.9.1 自定义loggerControl
    创建自定义类LoggerControl继承QListWidget#pragmaonce#include<QListWidget>#include"Helper.h"#include<QTime>#include<QPainter>classLoggerControl:publicQListWidget{Q_OBJECTpublic:LoggerControl(QWidget*paren......
  • 5.95 BCC工具之dcsnoop.py解读
    一,工具简介dcsnoop工具用于追踪目录项缓存(dcache)的查找,并可用于dcstat(8)之外的进一步调查。由于dcache查找可能很频繁,因此输出可能很冗长。默认情况下,仅显示查找失败的情况。二,代码示例#!/usr/bin/envpythonfrom__future__importprint_functionfrombccimport......
  • 5.96 BCC工具之dcstat.py解读
    一,工具简介1.1 dcache介绍dcache,即目录项缓存(DirectoryEntryCache),是Linux内核中的一个重要缓存机制。它主要用于缓存文件系统中的目录项信息,包括文件和目录的名称、位置、权限等元数据。这些元数据在文件系统中被频繁访问,因此将它们缓存在内存中可以显著提高文件访问的性......
  • 飞凌RK3568开发板移植Qt5.9.8
    1、安装Ubuntu18.04虚拟机,并开启root登录2、gcc环境搭建从官方提供的网盘资料OK3568-C_ForlinxDesktop20.04_用户资料_R3(更新日期:20231201),解码\Linux\源码\OK3568-linux-source,在prebuilts文件夹将gcc拷贝到虚拟机(Ubuntu18.04)的/usr/local目录下 设置环境变量,修改/etc/pr......
  • 2024年1月玩客云刷Armbian_20.11_Aml-s812_5.9.0-支持USB-WIFI最终完美版记录
    固件:https://www.right.com.cn/FORUM/thread-4103842-1-1.html写入emmc后aptupdateaptupgradee用armbian-config连接wifi,设置WiFiIP地址安装omv5(需要科学)参照:https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=3049724&highlight=omv51.安装基础依赖(该步骤......
  • PMP-5.9-1 采购文档、配置管理计划
    一、实施采购过程--采购文档采购文档是用于达成法律协议的各种书面文件,其中可能包括当前项目启动之前的较旧文件。采购文档可包括:1.招标文件招标文件包括发给卖方的(1)信息邀请书(2)建议邀请书(3)报价邀请书(4)以便卖方编制应答文件2.采购工作说明书采购工作说明书(SOW)向卖......
  • PMP-5.9 实施采购(买方视角-甲方)-采购文档
    ######################################################实施采购管理,在PMP中是甲方的视角。甲方在执行采购的时候,要考虑整个项目过程中的关键内容,如:范围、需求、进度、成本、风险等等。乙方视角如何进行招投标,可以展开很多,我们讲完PMP之后设置独立章节说明。招投标也是我现在......
  • Qt 5.9.6+VS2019 community 环境配置
    介绍GCCminGW安装Qt5.9.6安装VS2019community略配置VS2019community在VS的管理拓展里面下载Qtvisualstudiotools如果下得很慢就手动下载vsaddin......