JAVA

JAVA继承基本样式  

class Demo extends Object{
Demo(int a){
this();
}
Demo(){
super();
}
}

java默认继承Object 类, 并一定会在构造函数中调用super()方法,对父类进行实例化。注意:this()和super()不能同时出现在同一个构造函数中,但super()必须在其中一个构造函数中出现!

Java实例化过程

  1. 运行父类的静态代码部分
  2. 再运行子类的静态代码部分
  3. 执行父类成员代码
  4. 执行父类构造函数 —— 父类完成实例化
  5. 执行子类的成员代码块
  6. 执行子类的构造函数 ——子类实例化完成
# 先执行静态代码部分,包括静态变量声明赋值,静态代码块等。
# !进行默认初始化(变量声明,默认为null 或0)
# 调用构造函数
# 通过子类构造函数调用父类的构造函数进行初始化——父类弹栈
# !进行子类的显示初始化
# 子类特定函数的特定初始化
# 内存地址赋值给变量

java实例化过程的一些细节

PYTHON

PYTHON继承基本样式

class Demo(object):
def __init__(self,a):
super().__init__()
self.a = a

python 实例化过程同java,默认继承object,需要对父类进行实例化。

Python实例化过程

  1. 执行父类的静态代码
  2. 执行子类的静态代码
  3. 执行子类__new__()方法
  4. 在子类__new__() 方法中调用父类__new__()方法
  5. 调用父类__init__()方法(父类实例化完成)
  6. 调用子类__init__()方法(子类实例化完成)
class Demo(object):
# print("父类静态")
def __new__(cls, *args, **kwargs):
# print("父类new")
return object.__new__(cls)
def __init__(self,a):
# print("父类init")
super().__init__()
self.a = a class A(Demo):
def __new__(cls, *args, **kwargs):
# print("子类new")
super().__new__(Demo) #注意:这里默认调用父类的new,可以不写且不调用父类new方法。同样可以达到继承的效果
return object.__new__(cls)
# print("子类静态")
def __init__(self):
super().__init__(1)
# print("子类init")
A()

python实例化过程

对比

  继承

  Java   对象在调用父类中方法时,该方法调用的方法会优先使用子类的方法,调用的成员变量会优先调用父类的变量。

  Python  对象在调用父类中方法时,调用的方法和变量都优先调用子类的方法和变量。

  多态

  python天生多态

  java:因为涉及到变量属性的问题,必须对对象进行降级和转换才能使用子类的方法和属性。

Animal a = new Cat();
//a并不能使用Cat类的功能,所有属性和方法都是Animal父类的
Cat c = (Cat)a; //才能使用

以上例为例,在变量类型是实例类型的父类或者接口的时候,编译和运行存在差别:

  1. 成员变量:在编译和运行都参考Animal即 = 的左边!
  2. 方法:编译参考Animal即 = 左边,父类有才编译通过,运行优先参考Cat即参考=右边。(在重名的情况下依然使用的是子类的方法,但是如果调用父类没有的方法,是无法编译通过的。)
  3. 静态部分: 因为不需要对象,也不存在this,都是参考Animal即=左边!

Java ,python面向对象的继承及其区别的更多相关文章

  1. Python 面向对象编程 继承 和多态

    Python 面向对象编程 继承 和多态 一:多继承性 对于java我们熟悉的是一个类只能继承一个父类:但是对于C++ 一个子类可以有多个父亲,同样对于 Python一个类也可以有多个父亲 格式: c ...

  2. Python面向对象编程——继承与派生

    Python面向对象编程--继承与派生 一.初始继承 1.什么是继承 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题. 继承是一种创 ...

  3. Python面向对象03 /继承

    Python面向对象03 /继承 目录 Python面向对象03 /继承 1. 初识继承 2. 单继承 3. 多继承 4. 总结 1. 初识继承 概念:专业角度:如果B类继承A类,B类就称为子类,派生 ...

  4. python面向对象(封装,继承,多态)

    python面向对象(封装,继承,多态) 学习完本篇,你将会深入掌握 如何封装一个优雅的借口 python是如何实现继承 python的多态 封装 含义: 1.把对象的属性和方法结合成一个独立的单位, ...

  5. python 面向对象之继承与派生

    一:初识继承 1,什么是继承? 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题 继承是一种创建新类的方式,在python中,新建的类 ...

  6. python面向对象编程 继承 组合 接口和抽象类

    1.类是用来描述某一类的事物,类的对象就是这一类事物中的一个个体.是事物就要有属性,属性分为 1:数据属性:就是变量 2:函数属性:就是函数,在面向对象里通常称为方法 注意:类和对象均用点来访问自己的 ...

  7. Java入门 - 面向对象 - 01.继承

    原文地址:http://www.work100.net/training/java-inheritance.html 更多教程:光束云 - 免费课程 继承 序号 文内章节 视频 1 概述 2 继承的特 ...

  8. python面向对象的继承-组合-02

    *面向对象(OOP)的三大特征:**# 封装.继承.多态 继承 什么是继承 继承:# 是一种关系,描述两个对象之间什么是什么的什么的关系 例如:麦兜.佩奇.猪猪侠.猪刚鬣,都是猪 为什么要使用继承 继 ...

  9. Java:面向对象(继承,方法的重写(overide),super,object类及object类中方法的重写,父子类代码块执行顺序)

    继承: 1.继承是对某一匹类的抽象,从而实现对现实世界更好的建模. 2.提高代码的复用性. 3.extends(扩展),子类是父类的扩展. 4.子类继承父类可以得到父类的全部属性和方法.(除了父类的构 ...

随机推荐

  1. mac 安装软件

    一.安装spark 1.官网下载最新tar文件 2.解压 3.安装java开发环境 3.1.安装下载java 8  https://www.oracle.com/technetwork/java/ja ...

  2. leetcode33

    class Solution { public: int search(vector<int>& nums, int target) { //这个题是给一个排序数组,但是数组里面内 ...

  3. ES6语法的数组查询

    setProductId(param){ console.log(param); let prod = this.products.find(item =>{ return item.prodC ...

  4. Java编写串口程序

    用Java编写串口程序一般都会用到这个 http://fizzed.com/oss/rxtx-for-java 根据电脑的情况下载 解压以后有安装文档 For a JDK installation: ...

  5. 关于页面缩放时css错乱的处理方法---之一

    这几天遇到一个问题,就是在做网页的时候,页面缩放时,布局就乱了,原来的样子不会跟随缩放的放大或者缩小进行改变,直接导致的后果,就是页面很难看,无法使用 之前虽然写了代码,但是一直没有注意到缩放后页面的 ...

  6. jQuery自定义alert,confirm方法及样式

    学过JavaScript的都知道,alert().confirm()都是window对象特有的方法,而这两个方法我们平时使用的频率也很高,但是比较扎心的就是他自带的样式太... 因此,我整理了一个比较 ...

  7. java遍历实体类的属性和值

    代码如下: 实体类: public class User implements Serializable { private static final long serialVersionUID = ...

  8. C# 反编译

    今儿也是运气背,不知怎么的,一脚就把电脑踢关机了(其实就轻轻碰到了一下主机),我去,写了一早上的代码,尼玛就不见,不见就算了,其实是保存了的,主要是文件还损坏了,尼玛,那心情!!! 然后就想着恢复,下 ...

  9. 3、支付结果 /items/result?point=1&orderNo=201903211035400001

    <template> <div> <div class="toppic"> <img src="../../../assets/ ...

  10. windows、Linux同步外网NTP服务器时间

    配置 Windows 时间服务以使用外部时间源 要将内部时间服务器配置为与外部时间源同步,请使用以下方法之一: 软件自动配置  Windows 时间服务 若要自动修复此问题,请单击“下载”按钮. 在“ ...