复习{
抽象:
什么是抽象?
类是 对象的 抽象 , 抽象体现在java中抽象类
比类还要抽象的,是类的半成品,比抽象类还要抽象
的是接口, 一般抽象的思想都是 以设计层面考虑问题
会有具体的实现类 实现其功能;
java中 体现抽象的思想就是从两方面
抽象类, 接口
抽象类的特点:
使用abstract关键字修饰,有构造器
不能new对象, 只能被子类继承
一个抽象类中 可以有抽象方法,也可以有普通方法
一个抽象方法所在的类 一定是 抽象类
接口: 被称为完全抽象, 接口的结构为
静态常量 , 抽象方法 , 不能 创建对象
没有构造器 ,存在的意义就是被用来实现的
implements , 一个接口可以被 多个了实现
一个类可以实现多个接口
,接口和 接口之间是 继承关系,支持多继承
枚举: enum
用来设计程序中 一些 固定的 属性,个数事物
例如: 四季 , 月份, 性别 ....
public enum Season{
}
枚举的组成部分:
1.专有名词, 2.属性 3.方法 4.构造器 5.静态块儿 ,6.游离块儿
第一个行 必须是专有名词, 当对象, 属性使用
枚举不能创建对象, 是不类 , 是一个特殊的类
一般跟 switch 连用
--------------------------------------------------------
1.类和类之间的关系 (纯理论)
继承关系
实现关系
依赖关系: 从语义级别考虑,具有临时性,偶然性,弱性依赖
从代码的级别考虑, 类B作为 类A中方法 的入参,被 类A 使用
继承 实现
依赖 < 关联 < 聚合 < 组合
---------------------------------------------------------
2.内部类: 类 的 内部 的 类 它的作用 就是为了 封装
|-- 成员内部类:
作为类的成员
1.Inner类 能不能 或Outer类的所有资源?
经过测试, 内部类可以用到外部类的所有 资源
无论是 公共的还是私有的;
2.外部类 不可以用 内部类的 所有资源,无论是 公共的 还是私有的
如果想要获取到 就必须 new 内部类 Inner的 对象
3.测试类 :
|-- Outer.Inner inner = new Outer().new Inner();
inner只代表 内部类
|-- Outer o = new Outer():
o是外部类的对象
Inner i = o.new Inner();
i是内部类的对象
|-- 静态内部类 static
1.静态内部类 是不可以加载 外部类的 非静态资源的
2.外部类想要加载内部类的资源必须 创建内部类的对象
3.测试类: new Outer.Inner(); 外部类.静态内部类
|-- 方法内部类
1.方法内部类 依然可以使用外部类的所有资源
2.外部类的别的方法是 不能使用方法内部类的资源的,也不能创建对象
只能在外部类的方法体中,内部类下面
创建内部类的对象 并调用方法
3.测试类: 测试类 是永远都不能创建方法内部类的对象的
只有调用这个方法的时候 才会 new Inner();
而且必须是手动在方法体重 new Inner();
|-- 匿名类:
只针对 接口 , 抽象类 使用
出现在方法体中:
main , 普通方法
作用: 匿名 类, 作用在不影响 原始功能更的情况下,
可以 临时的 修改功能, 拓展功能
3.对象数组:
数组 : byte , int , short , long ,double ,float , char
boolean
int[] arr = new int[3];
arr[0] = 9;
arr[1] = 5;
arr[2] = 8;
类类型[] persons = new 类类型[3];
例如: Person[] p = new Person[4];
Person p1 = new Person();
p[0] = p1;
new Person(); //自定义对象
new Student();
new Dog();
new Cat();
对象数组中 存储的是 对象的引用;
循环遍历时 ,返回的 时 对象
要通过对象 才能调用对象中的属性 和方法
对象数组数组只能存储同一个数据类型
Object[] obj = new Object[3];
这个对象数组是万能的容器,什么类型都可以存储
com.oracle.test5.Person@15db9742
代表了 new Person("张三",23); 在堆中的内存地址
由 包名 + 类名 + 地址
}