1. 回顾
多态是什么?
对象在不同时刻表现出来的不同的状态.
父类子对象
前提:
1) 要有继承或者实现关系
2) 要有方法的重写
3) 要有父类(接口)引用指向子类(实现类)的对象.
变量和方法特点:
变量:编译和运行都看左边
方法:编译看左边,运行看右边
抽象类是什么?
抽象方法:只有方法声明,没有方法体的方法,用abstract关键字修饰.
包含抽象方法的类就可以被称为抽象类.
抽象类里面还可以包含非抽象方法.
1) 不能被实例化
2)
3) 子类继承抽象类, 要么本身抽象, 要么重写父类的所有抽象方法.
成员:
1) 变量 可以有变量, 可以有常量
2) 有构造, 目的是用来子类访问父类成员之前对父类的成员进行初始化
3) 方法: 抽象, 非抽象
接口是什么?
interface
基本:
不能被实例化
方法全部是抽象
成员:
1) 成员变量都是常量, public static final
2) 成员方法 只能是抽象的方法, public abstract
抽象类和接口的区别?
1) 成员特点:
2) 关系特点:
3) 设计理念:
抽象类定义的是体系的共性内容, 体现的是 is a 的关系
接口定义是系统的扩展功能,体现的是 like a 的关系
2. 带包类的编译和运行
java文件中的元素位置顺序.
package -- import -- class
package语句必须作为java文件中的第一行非注释语句.(如果有的话)
自动建包:
编译: javac -d 目录(.表示当前目录) 类名.java
运行: java 带包名(全路径)的类名
不同包下类的调用和导包:
例如: 在 com.csdn 包下的类 Test 中使用 cn.itcast 包下的 Demo 类.
1) 要先编译cn.itcast 包下的Demo类.
2) 在Test类里面
可以使用Demo的全路径类名. 比如 cn.itcast.Demo d = new cn.itcast.Demo();
也可以导包(建议)
import cn.itcast.Demo;
使用的时候 : Demo d = new Demo();
3. 权限修饰符
public
protected
默认
private
一般使用规则:
一个java文件中只写一个类.并且public修饰
成员变量 private
成员方法 public
构造方法 public (工具类和单例模式除外 private)
如果发现API的一个类没有提供构造方法
1) 所有方法静态,使用类名调用
2) 它提供了静态的公共的方法,返回了本类的对象.
4. 内部类
一个类定义到另一个类的内部.对于内部的这个类就被称为内部类(嵌套类).
特点:
内部类可以直接访问外部类的成员,
外部类想访问内部类的成员必须创建内部类的对象.
5. 内部类分类及使用
分类:
成员内部类
局部内部类
使用:
内部类使用格式:
外部类名.内部类名 变量名 = 外部类对象.内部类对象;
例如: Outer.Inner oi = new Outer().new Inner();
成员内部类
修饰符:
private -- 为了安全.
static -- 为了方便
调用格式:
外部类名.内部类名 变量名 = new 外部类名.内部类名();
例如:Outer.Inner oi = new Outer.Inner();
局部内部类:
局部内部类访问外部类的局部变量,变量就需要加final修饰.
原因:延长变量的生命周期.
6. 匿名内部类
没有名字的局部内部类.
前提: 必须有一个类,抽象类或者接口.
格式:
new 类名或者接口名()
{
// 重写父类或者接口中的方法
// 也可以自定义方法
};
理解:
匿名内部类的本质其实是继承了类或者实现了接口的匿名子类对象.
应用场景:
方法接收的形式参数是抽象类或者接口的时候,就可以考虑采用匿名内部类.
也就是说: 把定义实现类和创建实现类的对象放在一块完成了.
重点:
1.
权限修饰符:
public protected 默认 private
修饰符:
static final abstract
2. 匿名内部类的使用
其他理解即可.
|
|