1.类之间的关系
1.1继承
使用extends表示
类和类之间是单继承
接口和接口之间是多继承,多个用逗号隔开
1.2实现
类和接口之间是多实现,多个用逗号隔开
Class类名 implements 接口,接口…{}
类实现接口后,必须实现所有的抽象方法,否则该类需要加abstract修饰
1.3依赖
1.4 关联
1.5 聚合
整体和局部都有独立的生命周期
1.6 部分和整体不可分离
2.内部类
2.1概述
当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内 部的完整的结构又只为外部事物提供服务,那么整个内部的完整结构最好使 用内部类
在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者 称为外部类。
Inner class一般用在定义它的类或语句块之内,在外部引用它时必须给出完 整的名称。
2.2 成员内部类
package OurterClass;
/**
* @author 王梓硕
* @date :2022年1月13日 上午11:32:21
* 成员内部类,可以看做成员变量
* 内部类优点:可以访问外部类的私有化属性
*/
public class OurterClass_01 {
private static String s1="私有化静态变量";
private String s2="私有化成员变量";
//成员内部类
//可以使用访问权限控制修饰符
//在成员内部类中不能有静态声明
//在成员内部类中,可以直接访问外部类所以属性
//内部类类名 编译之后:外部类类名$内部类类名
class InnerClass{
//在成员内部类中不能有静态声明
// static int i=2;
//在成员内部类中,可以直接访问外部类所以属性
public void m1(){
System.out.println(s1);
System.out.println(s2);
}
}
public static void main(String args[]){
//1.创建外部类对象
OurterClass_01 o=new OurterClass_01();
//2.创建内部类对象
InnerClass inner = o.new InnerClass();
//3.访问属性
inner.m1();
}
}
2.3 静态内部类
package ClassRelation;
/**
* @author 王梓硕
* @date :2022年1月13日 上午11:41:27
*静态内部类 可以看做静态变量
*
*在静态内部类中,可以声明成员属性也可以声明静态属性
*
*在静态内部类中,无法直接访问外部类的成员属性,需要创建外部类对象访问才行
*
*/
public class OuterClass_02 {
private static String s1="私有化静态变量";
private String s2="私有化成员变量";
//声明一个静态内部类
static class InnerClass{
public static void m1(){
System.out.println(s1);
//在静态内部类中,无法直接访问外部类的成员属性,需要创建外部类对象访问才行
// System.out.println(s2);
}
public void m2(){
System.out.println(s1);
// System.out.println(s2);
}
}
public static void main(String args[]){
//调用m1
OuterClass_02.InnerClass.m1();
//当前类中类名可以省略
InnerClass.m1();
//创建静态内部类对象
InnerClass inner= new OuterClass_02.InnerClass();
//类名可以省略
inner =new InnerClass();
//调用m2
inner.m2();
}
}
2.4 局部内部类
2.5 匿名内部类
3.设计模式
3.1 概述
3.2饿汉模式
3.3懒汉模式
package _03_Singleton;
/**
* @author 王梓硕
* @date :2022年1月13日 下午6:41:38
* 2 用到的时候,再创建对象,称为懒汉模式
*/
public class Singleton_02 {
private static Singleton_02 s = null;
public static Singleton_02 getInstance() {
if (s == null) {
s = new Singleton_02();
}
return s;
}
}