封装
封装的概念
1、将类的某些信息隐藏在类的内部,不允许外部程序直接访问,
2、而是通过该类提供的方法来实现对隐藏信息的操作和访问
封装的实现
1、修改属性的可见性(private)
2、创建公有的getter,setter方法
3、在getter,setter方法中加入属性的控制语句,
封装的好处
1、便于使用者正确使用系统,防止错误修改属性
2、有助于系统之间的松耦合,提高系统独立性
3、提高软件的可重用性
4、降低了构建大型系统的风险
包(package)
//用包的好处
1、文档分类,便于查找
2、使用目录解决文件同名冲突问题
包的创建
package cn.jbit.inherit;//声明包
public class School{
.................
}
//包(package)应作为java源代码的第一条语句
//用package声明包,以分号结尾
包的命名规则
1、包名有小写字母组成,不能以圆点开头或结尾----------package mypackage;
2、包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名
3、包名后续部分依不同机构内部的规范不同而不同
类的访问修饰
1、public修饰符:公有访问的级别
2、默认修饰符:包私有
3、private:类私有
修饰符 | 同一类中 | 同一包中 | 子类中 | 任何地方 |
---|---|---|---|---|
private | 可以 | 不可以 | 不可以 | 不可以 |
默认修饰符 | 可以 | 可以 | 不可以 | 不可以 |
protected | 可以 | 可以 | 可以 | 不可以 |
public | 可以 | 可以 | 可以 | 可以 |
static修饰符
修饰对象
1、成员变量
静态变量,可以直接通过类名访问
2、成员方法
静态方法,可以直接通过类名访问
3、代码块
静态代码块,当java虚拟机加载类时,就会执行该代码块
static代码块
//如果有多个静态块,按顺序加载
//每个静态代码块只会被执行一次
static{
代码块; //只执行一次
}
static变量
类的成员变量包括
1、类的变量(静态变量)
被static修饰的变量
在内存中只有一个拷贝
类内部,可以在任何方法内直接访问静态变量
在其他类中,可以直接通过类名访问
2、实例变量
没有被static修饰的变量
没创建一个实例,就会为实例变量分配一次内存,实例变量 可以在内存 中多个拷贝,互不影响
static方法
1、静态方法:可直接通过类名访问
静态方法中必能使用this和super
不能直接访问所属的实例变量和实例方法
可直接访问类的静态变量和静态方法
2、实例方法:通过实例访问
可直接访问所属累的静态变量、静态方法、实例变量和实例方法
3、静态方法必须被实现----如main方法
继承
使用继承
1、编写父类
访问修饰符 class Pet{
//公共的属性和方法
}
2、编写子类,继承父类
访问修饰符 class Dog extends Pet{
//子类特有的属性和方法
}
注:java中只支持单继承
理解继承
// 使用super关键字,代表父类对象
// 在子类构造方法中调用且必须是第一句
// 不可以访问父类中定义为private的属性和方法
1、访问父类构造方法
super();
2、访问父类属性
super.name;
3、访问父类方法
super.print();
4、继承public和protected修饰的属性和方法,不管子类和父类是否在同一个包里
5、继承默认权限修饰符修饰的属性和方法,子类和父类必须在同一个包里
继承条件下的构造方法
继承条件下构造方法的调用规则
1、子类构造方法没有通过super显式调用父类的有参构造方法,也没通过this显式调用自身其他构造方法
系统默认调用父类的无参构造方法
2、子类构造方法通过super显式调用父类的有参构造方法
执行父类相应构造方法,而不执行父类无参构造方法
3、子类构造方法通过this显式调用自身的其他构造方法,在相应构造方法中应用以上两条规则