java:面向对象的封装性

    技术2024-03-28  76

    没有封装

    面向对象的三大特征: 封装:好处:1.封装之后,看不到这个事物比较复杂的一面,只能看到简单的一面 复杂性封装,对外提供简单的操作入口,比如照相机(内部原理很复杂,但是操作起来很简单)

    2.封装之后才会形成真正的对象,真正的独立

    3.封装就意味着以后的程序可以重复使用,并且这个事物的适用性比较强,在任何场合都可以用

    4.封装之后,对于事物本身提高了安全性。

    继承 多态

    定义一个User类

    package Test2; public class User { int age; String name; }

    定义UserTest测试类

    package Test2; public class UserTest { /** * 对于当前程序来说,user类中的age属性在外部程序中可以随意访问,导致age属性的不安全。 * 一个user对象表示一个对象,用户的年龄不可能为负数,以下程序中年龄值是负数,但是没有报错 * 这是当前程序存在的缺陷 * @param args */ public static void main(String[] args) { User user = new User(); user.name ="大明"; user.age=-100; //可以随意访问,没有封装。建议被user类型进行封装,在外部程序中不能随便访问user中的属性 System.out.println(user.age); } }

    封装之后

    对于数据的访问形式:

    读取值(get)修改值(set)

    封装的步骤:(操作入口变成了只能通过set和get方法进行访问)

    所有属性私有化,使用private关键字进行修饰。private修饰所有的数据只能在本类中访问对外提供简单的操作入口。也就是说想要访问age属性必须通过入口进行访问 对外提供两个公开的方法,分别是set和get 想修改age就调用set 向读取age就调用getset方法的命名规范:

    public void set+属性名首字母大写(形参){ }

    public void setAge(int a){ age=a; }

    get方法的命名规范:

    public int getAge(){ return age; }

    setter and getter 方法没有static关键字 有static关键字的方法用法:类名.方法名(实参); 没有static关键字的方法用法:引用.方法名(实参);

    也可以在代码片段里右键 source - setter and getter

    定义一个user类

    package Test3; * @author Administrator * */ public class User { private int age; //进行了私有化,但是就在外面彻底访问不到了(UserTest类也不行) public void setAge(int a){ //编辑业务逻辑代码进行安全控制 if(a<0 || a>150){ System.out.println("输入的年龄不合法"); return; }//如果程序执行到了这里,说明age的年龄是合法的,就可以进行赋值运算 age = a; } public int getAge(){ return age; } } package Test3; public class UserTest { /** * @param args */ public static void main(String[] args) { User user=new User(); //System.out.println(user.age); 有了private修饰,使用这个方法已经访问不到了 user.setAge(-100); //不合法年龄 user.setAge(10); int age=user.getAge(); System.out.println(age); } }
    Processed: 0.021, SQL: 9