4.25

所花时间:5小时

代码量:33

博客篇:1

python总结

比较了Python与Java在类的定义、继承、多态等方面的异同,总结Python面向对象程序设计中的原则和注意事项。

定义:

 

java:

 

public class Car {

 

    private String color;

 

    private String model;

 

    private int year;

 

 

 

    public Car(String color, String model, int year) {

 

        this.color = color;

 

        this.model = model;

 

        this.year = year;

 

    }

 

 

 

    public String getColor() {

 

        return color;

 

    }

 

 

 

    public String getModel() {

 

        return model;

 

    }

 

 

 

    public int getYear() {

 

        return year;

 

    }

 

}

 

 

python:

 

class Car:

 

    def __init__(self, color, model, year):

 

        self.color = color

 

        self.model = model

 

        self.year = year

 

从代码行上来看,显然还是python的代码行较少,显得较为简洁,同时,这个也可以被称为Python的优点之一。而且从中也可以明显看出python类中的变量可以直接使用,但是java中使用变量需要先声明再使用。

 

继承:

pythonjava在继承方面最大的区别就是python子类可以继承多个父类,但是java子类只能继承一个父类,如果一个子类需要多继承的话一般设计成interface接口的方式来实现。比如创造一个child类,类型fathermother。在Python中,father类和mother类可以都设计成child的父类,但在java中可以设计成father父类和mother接口,继承需要extends关键字实现,接口需要implements关键字实现

python:

class child(fathermother):

java:

class child extends father implements mother

 

多态:

java中的多态跟Python中的多态是有区别的。java中的多态定义:

多态存在的三个必要条件

1、要有继承;

2、要有重写;

3、父类引用指向子类对象。

java:

public class Test {

 

    public static void main(String[] args) {

 

      show(new Cat());  // Cat 对象调用 show 方法

 

      show(new Dog());  // Dog 对象调用 show 方法

 

                

 

      Animal a = new Cat();  // 向上转型  

 

      a.eat();               // 调用的是 Cat eat

 

      Cat c = (Cat)a;        // 向下转型  

 

      c.work();        // 调用的是 Cat work

 

  }  

 

            

 

    public static void show(Animal a)  {

 

      a.eat();  

 

        // 类型判断

 

        if (a instanceof Cat)  {  // 猫做的事情

 

            Cat c = (Cat)a;  

 

            c.work();  

 

        } else if (a instanceof Dog) { // 狗做的事情

 

            Dog c = (Dog)a;  

 

            c.work();  

 

        }  

 

    }  

 

}

 

 

 

abstract class Animal {  

 

    abstract void eat();  

 

}  

 

  

 

class Cat extends Animal {  

 

    public void eat() {  

 

        System.out.println("吃鱼");  

 

    }  

 

    public void work() {  

 

        System.out.println("抓老鼠");  

 

    }  

 

}  

 

  

 

class Dog extends Animal {  

 

    public void eat() {  

 

        System.out.println("吃骨头");  

 

    }  

 

    public void work() {  

 

        System.out.println("看家");  

 

    }  

 

}

python类具有继承关系,并且子类类型可以向上转型看做父类类型,如果我们从 Person 派生出 StudentTeacher ,并都写了一个 whoAmI() 方法:

python:

class Person(object):

 

    def __init__(self, name, gender):

 

        self.name = name

 

        self.gender = gender

 

    def whoAmI(self):

 

        return 'I am a Person, my name is %s' % self.name

 

 

 

class Student(Person):

 

    def __init__(self, name, gender, score):

 

        super(Student, self).__init__(name, gender)

 

        self.score = score

 

    def whoAmI(self):

 

        return 'I am a Student, my name is %s' % self.name

 

 

 

class Teacher(Person):

 

    def __init__(self, name, gender, course):

 

        super(Teacher, self).__init__(name, gender)

 

        self.course = course

 

    def whoAmI(self):

 

        return 'I am a Teacher, my name is %s' % self.name

posted @ 2024-04-25 19:46  umiQa  阅读(7)  评论(0编辑  收藏  举报