为什么使用继承

示例:学生类(名称,年龄)。在没有封装对name和age的访问时所带来的问题。
package bu18;
public class Test2 {
   
    public static void main(String[] args){
        Student stu1 = new Student();
        stu1. name = " 张三" ;
        stu1. age = -20;
       
        System. out .println(stu1. name );
        System. out .println(stu1. age );
    }
}
 
class Student{
   
    public String name ;
   
    public int age ;
}
 
 
输出:年龄小于零,不合乎逻辑。但是程序运行却是正常的,并没有报错。所以通过“ .”直接访问成员变量的做法是不对的。
 
改进(规范):
1、  所有成员变量设置为private
2、  所有成员变量添加getter和setter方法。通常方法都是public的。
3、  在setter中设置成员的值,而在getter方法只是作单纯的显示功能。
    原则:所有的赋值语句都在set方法中,而get方法只是简单地返回值。
 
 
class Student{
   
    private String name ;
   
    private int age ;
 
    public int getAge() {
        return age ;
    }
 
    public void setAge( int age) {
        if (age<0 ||age>150){
            System. out .println( " 日志:输入年龄不合法。" +age);
            age = 18; // 学生默认18岁
        }
       
        this . age = age;
    }
 
    public String getName() {
        return name ;
    }
 
    public void setName(String name) {
        this . name = name;
    }
   
}
 
封装总结:
1、  减少代码冗余,提高重用性
2、  提供一种访问机制,让使用者不能直接访问成员变量(常言道:通过公有方法来访问私有变量)。
3、  降低使用难度,使代码使用更为简单。
 
 
思考:在get方法中写,还是在set方法中写?
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值