2024.5.10
所学时间:2.2小时
代码行数:62
博客园数:1篇
所学知识:今天学习了Python与Java在类的定义、继承、多态等方面的异同,总结了Python面向对象程序设计中的原则和注意事项。
Python和Java都是面向对象的编程语言,但在类的定义、继承、多态等方面有一些不同之处。
类的定义: Python中定义一个类非常简单,只需要使用关键字class即可,而Java中需要使用关键字class和类名。另外,Python中不需要指定类的访问修饰符,而Java中需要使用public、private或protected等修饰符来控制类的访问权限。
Python示例:
class Person:
def \__init_\_(self, name, age):
self.name = name
self.age = age
Java示例:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
继承: Python和Java都支持类的继承,但Python中的继承更加灵活,一个子类可以继承多个父类,而Java中只支持单继承。此外,Python中使用super()函数来调用父类的方法,而Java中使用super关键字。
Python示例:
class Student(Person):
def \__init_\_(self, name, age, grade):
super().\__init_\_(name, age)
self.grade = grade
Java示例:
public class Student extends Person {
private int grade;
public Student(String name, int age, int grade) {
super(name, age);
this.grade = grade;
}
}
多态: Python和Java都支持多态,但Python中的多态更加灵活,不需要显式声明。Python中的多态是基于鸭子类型实现的,即只要对象具有某个方法或属性,就可以调用该方法或属性,而Java中的多态是基于继承和接口实现的。
Python示例:
class Animal:
def sound(self):
pass
class Dog(Animal):
def sound(self):
print("Woof")
class Cat(Animal):
def sound(self):
print("Meow")
def make_sound(animal):
animal.sound()
dog = Dog()
cat = Cat()
make_sound(dog)
make_sound(cat)
Java示例:
public abstract class Animal {
public abstract void sound();
}
public class Dog extends Animal {
public void sound() {
System.out.println("Woof");
}
}
public class Cat extends Animal {
public void sound() {
System.out.println("Meow");
}
}
public class Main {
public static void makeSound(Animal animal) {
animal.sound();
}
public static void main(String\[\] args) {
Animal dog = new Dog();
Animal cat = new Cat();
makeSound(dog);
makeSound(cat);
}
}
Python面向对象程序设计中的原则和注意事项:
尽量使用简单的类和方法,避免过度设计。
使用继承和多态来提高代码的可重用性和扩展性。
遵循单一职责原则,一个类应该只有一个责任。
使用私有属性和方法来封装类的实现细节,避免直接访问。
使用类的特殊方法来实现运算符重载和特殊行为。
避免使用全局变量和函数,尽量将代码封装在类中。
使用异常处理来处理错误和异常情况。