ITS·黑客

Python学习笔记十五

2017-05-12  本文已影响0人  6156fc232124

继承和多态

1.继承可以把父类的所有功能都直接拿过来,这样就不必重零做起,子类只需要新增自己特有的方法,也可以把父类不适合的方法覆盖重写。

2.静态语言对比动态语言

动态语言的鸭子类型特点决定了继承不像静态语言那样是必须的。

3.如果子类也定义了一个构造函数,那么应该在子类的构造函数中显式的调用父类的构造函数。

因为在本质上,子类重写了这个构造函数,如果不调用超类的构造函数,那么在超类中定义的属性就无法使用!!!

4.java和python鸭子类型的对比

java代码:会报编译错误**

public class D {

public static void main(String[] args) {

Dog dog=new Dog();

Tree tree=new Tree();

//在此会报编译错误

two_animal(tree);

}

public static void two_animal(Animal animal){

System.out.println("Two animal is running");

}

}

class Animal{

public void run(){

System.out.println("Animal is running");

}

}

class Dog extends Animal{

public void run (){

System.out.println("Dog is running");

}

}

class Tree{

public void run(){

System.out.println("Tree is running");

}

}

python则可以正常运行

class Animal():

def run(self):

print("Animal is running")

class Dog(Animal):

def run(self):

print("Dog is running")

def runs(animal):

print("Two animal is running")

class Tree():

def run(self):

print('Tree is running')

dog = Dog()

tree = Tree()

runs(dog)

runs(tree)

上一篇下一篇

猜你喜欢

热点阅读