写在前面:题主是一个半吊子大学生,java和python学的都不咋地,最近才突然发现python中也有类和对象这一说法。于是突发奇想,java和python中类和对象有什么不同呢?于是就有了这篇文章,按照个人理解,主要用于给自己复习用,毕竟好久没碰代码了。也欢迎大家看完留言,提出批评和指正。
ps:如有理解和代码方面错误,欢迎各位大佬评论区留言指正。
类和对象概述:简单的来说,类就是类型。在现实生活中,比如,动物类,猪类,狗类,人类等。正所谓物以类聚,人以群分。笼统的来说,类中的每个个体都会有相同的属性,比如说:狗类的舌头可以用来排汗,而人类却不行;狗类可以通过摇尾巴来表达开心的情绪,而猫类竖起尾巴则表示愤怒等。对象就是类的具体化,类是抽象的,而对象是具体的,可以通过引用对象来使用。
总而言之,类就是你大脑中对这个事物的属性和方法的抽象,比如我觉得猫有尾巴,有嘴巴,有毛发等,而你凭空变出一只猫,这只猫咪就是一个对象。
创建一个猫类:
JAVA:(先写一个eat普通方法)
class Cat{
public void eat(){ //为猫咪写一个eat普通方法
System.out.println("Cat eat fish");
}
}
Python:
class Cat:
def eat(self):
print("Cat eat fish")
为猫类赋予属性:
JAVA:
class Cat{
String color = "black"; //为猫咪定义颜色,名字,年龄三个成员变量
String name = "black cat";
int age = 2;
public void eat(){ //为猫咪写一个eat普通方法
System.out.println("Cat eat fish");
}
}
Python:
class Cat:
color = "Black"
name = "Black Cat"
age = 2
def eat(self):
print("Cat eat fish")
为猫类添加其他的方法:
JAVA:
class Cat{
String color = "black"; //为猫咪定义颜色,名字,年龄三个成员变量
String name = "black cat";
int age = 2;
public void eat(){ //为猫咪写一个eat普通方法
System.out.println("Cat eat fish");
}
public void sleep(){
System.out.println("Cat sleep in bed");
}
}
Python:
class Cat:
color = "Black"
name = "Black Cat"
age = 2
def eat(self):
print("Cat eat fish")
def sleep(self):
print("Cat sleep in bed")
目前为止,我们分别用Python和JAVA写出了猫类的一些属性和方法,那么如何调用?
由于我们只写了猫咪的类,我们并没有实例化出一直猫咪。就像是文章开图说的,脑海中有,但是怎么把它变到现实世界中呢?这时候,我们就要生成一个真正的猫咪对象并调用它的属性和方法。
JAVA:(需要写一个主类来运行我们刚刚写的代码)
主类和普通类一样都是类。例如我们刚刚写的猫类就是一个普通类,主类前面需要加public修饰,如果在一篇JAVA代码中有多个类,那么只有主类要加public修饰,其他的类不可以加public修饰,例如我们的猫类就不能加。简单的理解,在主类中实例化其他类生成对象并调用。
public class ClassTest {
public static void main(String[] args) {
Cat cat = new Cat(); //实例化猫咪,这个猫咪对象被命名为cat。ps注意大小写区分
System.out.println("This cat was named"+cat.name+"because it's color was"+cat.color+"is's age is"+cat.age);
cat.eat();
cat.sleep();
}
}
ps:在输出的过程中,用"+"来拼接
Python:
if __name__ == "__main__":
cat = Cat()
print("This cat was named"+str(cat.name)+" , because it's color was"+str(cat.color)+" , is's age is "+str(cat.age))
cat.eat()
cat.sleep()
运行效果:
JAVA:
"C:\Program Files\Java\jdk-16.0.1\bin\java.exe" "-javaagent:D:\New IDEA\IntelliJ IDEA 2020.2.4\lib\idea_rt.jar=52128:D:\New IDEA\IntelliJ IDEA 2020.2.4\bin" -Dfile.encoding=UTF-8 -classpath D:\XXXXXXXXXXXXXXXXXXXXXXXXXXXX\out\production\XXXXXXXXXXXXXXXXXXXXXXXXXXXX ClassTest
This cat was named black cat , because it's color was black , is's age is 2
Cat eat fish
Cat sleep in bed
Process finished with exit code 0
Python:
"D:\Python Pycharm files\The First\venv\Scripts\python.exe" "D:/Python Pycharm files/The First/Test.py"
This cat was namedBlack Cat , because it's color wasBlack , is's age is 2
Cat eat fish
Cat sleep in bed
Process finished with exit code 0