封装
继承:
多态:
继承或者实现关系
方法的重写。
父类的引用指向子类的对象。
好处:
扩展性
弊端:父类的引用不能使用子类特有的属性和功能。
向下转型。 -- 只能转成对象本类就是的那个类型或者其父类型。
抽象类和接口:
成员变量:
抽象类:可以是变量,可以是常量。
接口:只能是常量。默认修饰符 -- public static final
构造方法:
抽象类和接口都不能实例化对象。
抽象类有,为了子类初始化使用的。
接口是没有的。
成员方法:
抽象类:
可是是抽象的 -- 要求子类重写,来做某些事情
可以非抽象 -- 供子类继承。
接口:
只能是抽象的方法。默认的修饰符 public abstract
设计理念:
抽象类 -- is a -- 共性内容
接口 -- like a -- 扩展功能
2、包
按功能分
按模块分
定义包的注意事项:
package语句必须作为java文件中的第一行非注释语句。
一个java文件中只能有一个package语句。
编译运行带包的类:
编译:
javac -d . 类名.java
运行:
java 全路径的类名
不同包下类的访问,需要导包 -- import
3、访问权限修饰符
private -- 本类访问权限
默认 -- 同包访问级别
protected -- 子类访问级别
public -- 公共访问级别
权限修饰符:private,默认的,protected,public
状态修饰符:static,final
抽象修饰符:abstract
常用规则:
类 -- 用public,以后建议大家一个java文件中就写一个类
成员变量 -- javabean,用private, 提供标准的get和set方法
构造方法 -- 用public修饰,用来创建对象,权限要足够大
特殊:
工具类 -- 所有方法都静态了,所以构造私有
单例设计模式 -- 构造私有
成员方法 -- 用public,供别人使用的功能
4、内部类
把一个类定义到另一个类的内部。
根据内部类所处位置不同,可以分为:
成员内部类
局部内部类
内部类的访问特点:
内部类可以访问外部类的所有成员。
外部类如果想访问内部类的成员,必须创建内部类的对象。
创建内部类的对象格式:
外部类名.内部类名 变量名 = 外部类对象.内部类对象;
Outer.Inner oi = new Outer().new Inner();
成员内部类:
private 修饰成员内部类 -- 为了安全
static 修饰成员内部类 -- 为了方便
格式:外部类名.内部类名 变量名 = new 外部类名.内部类名();
Outer.Inner oi = new Outer.Inner();
局部内部类:
局部内部类访问方法中的局部变量,变量要加final修饰,延长变量的生命周期。
5、匿名内部类(没有名字的局部内部类)
格式:
new 类名或者接口名(){
重写父类或者接口中的方法; // 一般情况下,只有一个方法。
还可以有子类特有的方法; // 一般不这么做
};
本质是:继承了类或者实现了接口的匿名子类对象。
在开发中匿名内部类的常见应用就是作为参数传递。
简单理解:
就是将自定义类继承父类(或实现接口),重写父类(父接口)中的方法,并创建该子类的对象。
上面这些步骤合成一步,一个格式而已。
|
|