Java ,python面向对象的继承及其区别

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. 执行子类的构造函数 ——子类实例化完成

 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__()方法(子类实例化完成)

 python实例化过程

对比

  继承

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

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

  多态

  python天生多态

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

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

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

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

原文地址:https://www.cnblogs.com/xc1234/p/9160484.html

时间: 2024-07-28 23:09:16

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

黑马程序员——Java基础---面向对象之继承

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流!                                                                 面向对象之继承  一:继承(extends) (1)继承的体系结构:就是对要描述的事物进行不断的向上抽取,就出现了体系结构.

Python面向对象特性 - 继承

面向对象有3大特性:继承.多态.封装,本章介绍 Python中的 继承 特性~? 什么是继承 继承是创建类的一种方式,在 Python中支持多继承,即在创建类的时候可以继承一个或者多个父类.在继承关系中,被继承的类通常称为父类(或超类,基类),新建的类则称为子类(或派生类).?继承的优势在于可以有效地重用代码,提高代码的可读性~?继承示例: class Fu_1: # 父类 pass class Fu_2: # 父类 pass class Zi_1(Fu_1): # 单继承 pass class

python面向对象之继承与派生

一.继承 继承是一种创建新的类的方式,在python中,新建的类可以继承自一个或者多个父类,原始类称为基类或超类,新建的类称为派生类或子类. python中类的继承分为:单继承和多继承,如果是多继承的话,继承顺序有深度和广度2种 示例: class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass pass

python面向对象之继承/多态/封装

老师说,按继承/多态/封装这个顺序来讲. 子类使用父类的方法: #!/usr/bin/env python # coding:utf-8 class Vehicle: def __init__(self,name,speed,load,power): self.name = name self.speed = speed self.load = load self.power = power def run(self): print("开动啦.") class Benz(Vehicle

十七、Python面向对象之继承

在面向对象,继承是一个很重要的特性 子类与父类,子类是对父类的一种扩展,在父类的属性和方法上进行一些扩展 示例:没带继承 #定义一个带编号和状态的门的类 class Door(object): def __init__(self,num,status): self.num = num self.status = status def open(self): self.status = 'open' def close(self): self.status = 'close' #定义一个可以锁的门

java中接口和继承的区别

实际概念区别:区别1:不同的修饰符修饰(interface),(extends)区别2:在面向对象编程中可以有多继承!但是只支持接口的多继承,不支持'继承'的多继承哦而继承在java中具有单根性,子类只能继承一个父类区别3:在接口中只能定义全局常量,和抽象方法而在继承中可以定义属性方法,变量,常量等...区别4:某个接口被类实现时,在类中一定要实现接口中的抽象方法而继承想调用那个方法就调用那个方法,毫无压力 接口是:对功能的描述      继承是:什么是一种什么 始终记者:你可以有多个干爹(接口

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

1.1   继承和多态 1.1.1   继承 当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.Super class). >>> class Animal(object): ...    def run(self): ...        print('Animal is running...') #父类 ... >>> class Dog(Ani

python 面向对象四 继承和多态

一.继承 1 class Animal(object): 2 def run(self): 3 print('Animal is running...') 4 5 class Dog(Animal): 6 7 def run(self): 8 print('Dog is running...') 9 10 def eat(self): 11 print('Eating meat...') 12 13 dog = Dog() 14 dog.run() 1 Dog is running... 当子类

python面向对象的继承

无话可说,继承主要是一些父类继承,代码是非常具体的 #!/usr/bin/env python #coding:utf-8 class Father(object):#新式类 def __init__(self): self.name='Liu' self.FamilyName='Yan' def Lee(self): print '我是父类函数Lee' def Allen(self): print "我是父类函数Allen" class Son(Father): def __init