Java与Python语法对比 (三)面向对象

6. 封装性:getter&setter VS property装饰器

Java

public class Person {
    private String name;
    private int age;

    public Person(String name,int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
public class Funtion {
    public static void main(String[] args) {
        Person p = new Person("猪八戒", 18);

        p.setName("孙悟空");
        p.setAge(28);

        System.out.println(p.getName() + p.getAge()); //孙悟空28
    }
}

 

Python

class Person:
    def __init__(self,name,age):
        self._name = name
        self._age = age

    # property装饰器,用来将一个get方法,转换为对象的属性
    # 添加为property装饰器以后,我们就可以像调用属性一样使用get方法
    # 使用property装饰的方法,必须和属性名是一样的
    @property    
    def name(self):
        print('get方法执行了~~~')
        return self._name

    # setter方法的装饰器:@属性名.setter
    @name.setter    
    def name(self , name):
        print('setter方法调用了')
        self._name = name        

    @property
    def age(self):
        return self._age

    @age.setter    
    def age(self , age):
        self._age = age   

        

p = Person('猪八戒',18)

p.name = '孙悟空'
p.age = 28

print(p.name,p.age) # 孙悟空 28

7. 继承性

Java

public class Animal {
    public void run() {
        System.out.println("动物会跑~~~");
    }

    public void sleep() {
        System.out.println("动物睡觉~~~");
    }
}

public class Dog extends Animal {
    public void bark() {
        System.out.println("汪汪汪~~~");
    }

    @Override
    public void run() {
        System.out.println("狗跑~~~~");
    }
}

public class Hashiqi extends Dog {
    public void fan_sha() {
        System.out.println("我是一只傻傻的哈士奇");
    }
}

public class Funtion {
    public static void main(String[] args) {
        Dog d = new Dog();
        Hashiqi h = new Hashiqi();
    }
}

Python

class Animal:
    def run(self):
        print('动物会跑~~~')

    def sleep(self):
        print('动物睡觉~~~')

class Dog(Animal):
    def bark(self):
        print('汪汪汪~~~') 

    def run(self):
        print('狗跑~~~~')    

class Hashiqi(Dog):
    def fan_sha(self):
        print('我是一只傻傻的哈士奇')        

d = Dog()
h = Hashiqi()

8. 多态性

因为Python为动态数据类型,所以不需要严格意义上的多态性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

medichmai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值