面向对象(上)--3
一、面向对象的特征—封装和隐藏
1、封装性的理解
隐藏对象内部的复杂性,之对外公布简单的接口。便于外界调用,从而提高系统的可扩展性,可维护性。
换句话说:把该隐藏的隐藏起来,该暴露的暴露出来。
2、封装性的体现
1.将类的属性私有化,同时提供公共的方法来获取或设置;
2.不对外暴露私有化方法
3.单例模式
3、封装性的体现—权限修饰符
1.4种权限修饰符(从小到大):private,缺省,protect,public
2.权限修饰符的作用域
private | 缺省 | protected | public | |
类内部 | YES | YES | YES | YES |
同一个包 | YES | YES | YES | |
不同包的子类 | YES | YES | ||
同一个工程 | YES |
3.4种权限修饰符可以修饰类的内部结构:属性、方法、构造器、内部类
4.修饰类:只能用缺省,public
4、总结
Java提供了4种权限修饰符来修饰类及类的内部结构,体现类及类的内部结构在被调用时的可见性大小。
5、练习题
package com.xuanxiao.zhaoyi; /* * 创建程序,在其中定义两个类,Person和PersonTest类。 * Person类中包含属性age和方法setAge()、setAge(),用setAge()来设置人的年龄信息(0-130),用setAge()返回人的年龄。 * 在PersonTest类中实例化一个对象p,调用方法体现类的封装性。 */ public class PersonTest { public static void main(String[] args) { Person p = new Person(); //p.age = 13; //p.setAge(139); p.setAge(18); System.out.println(p.getAge()); } }
package com.xuanxiao.zhaoyi; public class Person { private int age; public void setAge(int i) { if(i < 0 || i > 130) { System.out.println("输入信息不符号实际要求"); }else { age = i; } } public int getAge() { return age; } }
二、构造器
1、作用
创建对象
初始化对象的属性
2、说明
1、如果没有显示的定义构造器的话,泽西用默认提供一个空参的构造器。
2、定义构造器的格式:
权限修饰符 类名(形参列表) { }
3、一个类中定义的多个构造器,彼此构成重载。
4、一旦显示的定义构造器之后,彼此构成重载。
5、一个类中,至少会有一个构造器。
3、练习题
package com.xuanxiao.zhaoyi; /* * 创建程序,在其中定义两个类,Person和PersonTest类。 * Person类中包含属性age和方法setAge()、setAge(),用setAge()来设置人的年龄信息(0-130),用setAge()返回人的年龄。 * 在PersonTest类中实例化一个对象p,调用方法体现类的封装性。 * * 在Person类中添加构造器,利用构造器设置所有人的age的属性初始化值为18。 * 修改上述类和构造器,增加name属性,使得每次创建Person对象的同时初始化对象的age属性值和name属性值。 * */ public class PersonTest { public static void main(String[] args) { Person p = new Person("Jack",18); //p.age = 13; //p.setAge(139); //p.setAge(12); System.out.println("name:" + p.getName() + "\tage:" + p.getAge()); } }
package com.xuanxiao.zhaoyi; public class Person { private int age; private String name; public Person() { age = 18; } public Person(String n,int i) { age = i; name = n; } public void setAge(int i) { if(i < 0 || i > 130) { System.out.println("输入信息不符号实际要求"); }else { age = i; } } public int getAge() { return age; } public void setName(String n) { name = n; } public String getName() { return name; } }
三、属性赋值的过程
1、属性赋值的过程
(1)默认初始化
(2)显示初始化
(3)构造器中初始化
(4)通过“对象.方法” 或者 “对象.属性” 的方法赋值
2、属性赋值的先后顺序
(1)-(2)-(3)-(4)
四、JavaBean
JavaBean是一种Java语言写成的可重用组件。
解释:
类是公开的
有一个无参的公共构造器
有属性,且有对应的 get , set 方法