首页 > 其他分享 >5.9安卓开发日记31

5.9安卓开发日记31

时间:2024-06-15 23:36:44浏览次数:30  
标签:Java name Python 5.9 安卓 public Animal 31 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,安卓,public,Animal,31,speak
From: https://www.cnblogs.com/lml66/p/18249984

相关文章

  • 5.8安卓开发日记30
    今天学习python实验,本次的实验为python中的实体类,随着实验的进行,让我发现它的实体类和cc++java的实体类大同小异,只需要记住相关写法,着重记一点区别,就能很快适应python实体类的书写。【题目描述】定义一个人员类People,其属性有:姓名、性别、年龄;基于People实现学生类Student,添加......
  • 5月31日
    今天上午完成了计网的实验二实验二 路由器动态路由的配置方法  一、实验目的: 1.理解动态路由的工作原理;2.学习并掌握动态路由协议RIP的配置;3.学习并掌握动态路由协议OSPF的配置;4.进一步学习路由器的配置命令。二、实验原理:RIP(RoutingInformationProtocols,路由信息......
  • 安卓签名文件打包错误 Invalid keystore format
    1.错误java.io.IOException:Invalidkeystoreformat...2.解决方案        方案1:                找到debug.keystore并删除                 路径 User\用户名\android\debug.keystore                 ......
  • DreamJudge-1310-奥运排序问题(精华)
    1.题目描述TimeLimit:1000msMemoryLimit:256mb按要求,给国家进行排名。输入输出格式输入描述:有多组数据。第一行给出国家数N,要求排名的国家数M,国家号从0到N-1。第二行开始的N行给定国家或地区的奥运金牌数,奖牌数,人口数(百万)。接下来一行给出M个国家号。输出描述:......
  • 317Springboot水产养殖系统水质水产资讯饲料使用养殖区域管理(源码+文档+运行视频+讲解
    项目技术:springboot+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows......
  • 《pvz植物大战僵尸杂交版》V2.0.88整合包火爆全网,支持安卓、ios、电脑等!
    今天来给大家安利一款让人欲罢不能的游戏——《植物大战僵尸·杂交版》2.0.88版。这可不是普通的植物大战僵尸,它可是席卷了B站,火爆全网的存在!先说说这个版本,它可是网络上现存最全的植物大战僵尸杂交版整合包。里面不仅有修改工具,还有超强通关存档和高清工具,简直是玩家的福音。......
  • NG32031单片机串口初始化
    目录1.串口基础2.串口配置步骤3.N32G031串口初始化示例3.1开启时钟3.2 配置GPIO3.3 配置USART3.4 使能中断(如果需要)    3.5. 示例代码4.调试和验证5.注意事项6.额外功能NG32G031单片机的串口(UART)通常用于与外部设备或计算机进行串行通信。以下......
  • 5.31
    今天完成数据库原理实验四1、开始→程序→MicrosoftSQLServer→SQLServerManagementStdio。2、在“连接到服务器”对话框中,选择“Windows身份验证”,点击“连接”,进入SQLServerManagementStdio操作界面。3、创建students数据库。利用如下sql语句在students......
  • 5.9
    今天继续进行python实验,学习到了python与java在类的定义、继承、多态等方面的异同。Python和Java都是面向对象的编程语言,它们在类的定义、继承、多态等方面有相似之处,但也存在一些显著差异。下面通过具体例子来比较这两种语言在面向对象编程上的异同,并总结Python面向对象编程的......
  • 5.9
    今日学习情况总结与小组成员讨论如何完成作业的主页面的xml页面代码行量:129行学习所花时间:0.5h  <?xmlversion="1.0"encoding="utf-8"?><androidx.drawerlayout.widget.DrawerLayoutxmlns:tools="http://schemas.android.com/tools"xmlns:android="http://sche......