打个比方:
一个person类中有一个属性age,那么如果用property声明后,set跟get方法仅仅只是做一个_age = age.但是你想想如果你在person类中new一个对象p,那么我可不可以写成 p setAge = -10 ?
一个人的年龄肯定不会有-10岁,如果重写set方法你就可以在set方法中写成
if(age <= 0){
age = 1;
}
也就是说当你给age赋值小于或等于0的时候,age会自动变成1,一个人的年龄是1岁,也比-10岁来的合理.
另一种场合:
子类重写父类中的方法:
-
在子类中实现与父类中同名的方法,称之为方法重写;
-
重写以后当给子类发送这个消息的时候,执行的是在子类中重写的那个方法,而不是父类中的方法。
-
如果想在子类中调用被子类重写的父类的方法,可以通过super关键字
-
使用场景:当从父类继承的某个方法不适合子类,可以在子类中重写父类的这个方法。