【博学谷学习记录】超强总结,用心分享丨人工智能 Python面向对象 学习总结之Python与Java的区别

news2025/2/28 20:17:54

目录

    • 前言
    • 简述
    • 面向对象
      • 对象
      • 特性

前言

经过学习,对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 + "辆车");
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/21318.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2000-2020年各省固定资本存量数据

2000-2020年各省资本存量数据 1:来源:统计NJ、各省统计NJ 2、时间:2000-2020年 3、包括:30个省 4、数据说明:含原始数据和计算过程及最终结果 4、指标说明: 参考文献: 单豪杰(…

【微服务架构组件之注册中心】注册中心选型-我只选nacos

注册中心的产生是基于用来解耦服务提供者(Provider)与消费者(Consumer)的关系,分布式设计架构下,众多的服务提供者的数量并不是动态不变的,在传统的静态LB的方案中,无法很好感知这种变化; 在分…

[附源码]java毕业设计网上宠物商店

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

进度条——不仅仅是语言层面上的小程序

文章目录\r和\n进度条完整代码\r和\n 在老式键盘上,回车键是这样的形状 但是该键的功能它不仅仅是回车,而是回车换行! 这里需要明白两个概念: 回车:光标移动到当前行的行首 换行:光标移动到当前位置的…

跟艾文学编程《Python基础》Anaconda 安装

作者:艾文,计算机硕士学位,企业内训讲师和金牌面试官,公司资深算法专家,现就职BAT一线大厂。 邮箱:1121025745qq.com 博客:https://edu.csdn.net/lecturer/894?spm1003.2001.3001.4144 内容&am…

原生AJAX

👨‍💻个人主页:微微的猪食小窝 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 微微的猪食小窝 原创 1、AJAX 简介 AJAX 全称为Asynchronous Javascript And XML,就是异步的JS 和 XML. 通过AJAX可以在浏览器中向服务器…

Vue3留言墙项目——主体部分静态、mock

文章目录主体头部主体关键部分小卡片组件创建mock数据以及使用主体头部 主体部分显示的内容,根据头部点击的是留言墙还是照片墙的按钮,显示不同的内容。 将照片墙和留言墙要渲染的数据抽取到一个js中,在导入的Main.vue(主体页面&…

[go]汇编ASM简介

文章目录汇编(ASM)寄存器帧指针FP常见指令函数示例生成汇编Go汇编代码主要用于优化和与底层系统交互,并不会像其它的经典汇编代码那样独立运行。汇编(ASM) Go ASM是一种被Go编译器使用的特殊形式的汇编语言(伪汇编),它基于Plan9输…

记录一次Powerjob踩的坑(Failed to deserialize message)

一. 问题描述: 在本地开发环境, server端和worker都运行正常. 但是发布到SIT环境(容器)的时候, 服务端却监测不到worker(worker可以找到服务端) 二. 问题表现: 1.服务端看不到Worker信息 2. 服务端日志信息 : Failed to deserialize message from [akka://oms111.111.111…

ECMAScript modules规范示例详解

引言 很多编程语言都有模块这一概念,JavaScript 也不例外,但在 ECMAScript 2015 规范发布之前,JavaScript 没有语言层面的模块语法。模块实际上是一种代码重用机制,要实现代码重用,将不同的功能划分到不同的文件中是必…

pycharm安装并加载编译器,设置背景图片,手把手详细操作

pycharm安装并加载编译器,设置背景图片,手把手详细操作 pycharm社区版(免费)下载官网 双击安装包,选择安装路径 勾选这两个,其实全不勾也没事 下一步默认就行,点install 安装完成后&#xf…

mimikatz抓取密码实战

必须下载最新版本 Releases gentilkiwi/mimikatz GitHubhttps://github.com/gentilkiwi/mimikatz/releases 有32和64之分,systeminfo查看自己版本 首先我们用后门得到权限,在用getsystem提权,因为mimikatz要system权限,getuid…

Python基础-1-环境搭建(初体验)

一:开发环境 Linux-5.15.0(Ubuntu22.04) 二:安装Python3 1、安装:sudo apt-get install python3 2、版本查询: python3 --version python3进入python解释器也可查询对应版本,按CtrlD或执行…

力扣(LeetCode)20. 有效的括号(C++)

栈模拟 一次遍历字符串 sss , 遇到左括号则入栈,遇到右括号则匹配栈顶。如果右括号匹配成功 , 栈顶元素弹栈 , 匹配不成功 , 则 returnfalsereturn\ \ falsereturn false 。 提示 : 当遍历完所有字符,记…

【计算机网络】扩展以太网方法总结

注:最后有面试挑战,看看自己掌握了吗 文章目录物理层扩展以太网链路层扩展以太网网桥网桥分类透明网桥源路由网桥多接口网桥----以太网交换机直通式交换机存储转发式交换机冲突域与广播域🍃博主昵称:一拳必胜客 🌸博主…

LinkedList详解

介绍 众所周知ArrayList底层数据结构是数组,但是数组有个缺点,虽然查询快,但是增删改会慢因为数组是在连续的位置上面储存对象的应用。当我们删除某一个元素的时候在他后面的元素的索引都会左移,导致开销会很大。所以LinkedList应…

Linux系统下交叉编译工具的安装实现

大家好,今天主要和大家聊一聊,如何使用Linux系统下的交叉编译工具链的方法。 目录 第一:交叉编译工具链基本简介 ​第二:交叉编译工具安装方法 ​第三:安装相关库 ​第四:交叉编译工具验证 第一:交叉编译工具链基…

0100 蓝桥杯真题03

import java.util.Scanner; /* * 题目描述 * 如下图所示,3 x 3 的格子中填写了一些整数。 --*---- |10* 1|52| --****-- |20|30* 1| *******-- | 1| 2| 3| ------ *我们沿着图中的星号线剪开&#xf…

【Redis-04】Redis两种持久化方式(RDB和AOF)

Redis是基于内存的数据结构服务器,保存了大量的键值对数据,所以持久化到磁盘是非常必要的,Redis提供了两种持久化的方式,分别是RDB和AOF。下面我们看下这两种持久化方式的具体实现原理。 1.RDB持久化 首先,RDB持久化方…

Mysql基础

Mysql基础1. 数据库相关概念1.1 数据库1.2 数据库管理系统1.3 常见的数据库管理系统1.4 SQL2. Mysql的安装2.1 MySQL数据模型3. SQL概述3.1 SQL简介3.2 通用语法3.3 SQL分类4. DDL:操作数据库4.1 数据库的显示讲解4.2 查询4.3 创建数据库4.4 删除数据库4.5 使用数据库4.6 小结5…