包
概念:为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。
包的作用:
避免类重名;
按照不同功能管理类;
控制访问权限。
包的命名规则:
在包名中,可以使用.号来区分包的级别;包名一般情况下是小写。
第一级 指该项目的类型,如com(公司),org(组织),gov(政府)等;
第二级 指项目所开发或者运行的公司名称,如:oracle,sun,huawei 等;
第三级 指项目的名称,如:bcms,oa,erp,cms等 ;
第四级 指项目模块的名称,如:bean,action,exception等。
关键字import:import 使用其他包中的类时,需要导入其他包中的类 (同
一个包的类,java.lang不用导入)。
注:Car 是类的简称 类的全称(全类名)day2.Car
访问权限修饰符
public:公共权限 在任何类中都可以访问到。
protected:受保护权限 在自己类中,同包的其他类中,在不通包的子类中
可以访问到。
(default):默认权限 在自己类中,同包的其他类中。
private:私有权限 只能在自己类中访问。
面向对象三大特征之一 封装
概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法
来实现对隐藏信息的操作和访问 。
优点:1)隐藏类的实现细节
2)只能通过规定方法访问
3)方便加入控制语句
4)方便修改实现
普通封装: 将某个功能封装成了一个方法, 例如 写了一个工具类, 定义好了几个常用的方法 ..。
面向对象中的封装: 是隐藏( 访问权限修饰符 private protected 默认public),将类中的某些信息
对外开发。
private String name;// 属性私有化 只是封装的一种表示
public class Person {
// private 将name属性隐藏,在其他类中访问不了 private String name; private int age; public void setAge(int age){ if(age>=18){ this.age=age; } } public int getAge(){ //........ return age; } //setXXX就是为私有属性提供访问的公共方法 public void setName(String name){ //方便加入控制语句 if(name.length()>3&&name.length()<6){ this.name = name; } } public String getName(){ return this.name; } }
public class TestPerson {
public static void main(String[] args) { Person zs = new Person(); zs.setName("asdas");//name是私有属性zs访问不到 System.out.println(zs.getName()); } }
例如:单例模式(模板 解决一种问题 就有一个模板 )
单例模式解决在一个程序中,只能让一个类创建一个对象
public class WindowDemo { static WindowDemo windowDemo=null;//WindowDemo是私有的 /* 将构造方法私有化,这样在其他类中就不能创建对象了. */ private WindowDemo(){ } //向外提供一个方法,用来创建唯一的一个对象,并返回此对象 public static WindowDemo getWindowDemo(){ if(windowDemo==null){ windowDemo = new WindowDemo(); } return windowDemo; }
}
public class TestWindow { public static void main(String[] args) { System.out.println( WindowDemo.getWindowDemo()); System.out.println( WindowDemo.getWindowDemo()); }
}