Java_Day_13_总结

1.依赖关系

所谓依赖就是某个对象的功能依赖于另外的某个对象,而被依赖的对象只是作为一种工具在使用,而并不持有对它的引用。

2.关联关系

某个对象会长期的持有另一个对象的引用,而二者的关联往往也是相互的。

关联的两个对象彼此间没有任何强制性的约束,只要二者同意,可以随时解除关系或是进行关联,它们在生命周期问题上没有任何强制性的约束,被关联的对象还可以再被别的对象关联,所以关联是可以共享的。

public class ClassRelation_01 {
	// 关联关系,成员变量保存了另一个类 对象引用
	// 关系是长期的
	A a = new A();

	public static void main(String[] args) {
		// 依赖关系,局部变量,保存另一个类 对象引用
		// 方法执行完,关系就不存在了
		A a = new A();
	}
}

// 类之间单继承
class A {
}

class B extends A {
}

interface C {
}

interface D {
}

// 接口之间多继承
interface E extends C, D {
}

// 类和接口之间多实现
class F implements C, D {

局部内部类:可以看做局部变量
不能使用权限修饰符、也不能static
局部内部类的类名为外部类$内部类类名
内部类访问方法的局部变量,必须是final 类型,不能更改
 

public static void main(String[] args) {

	}

	// 静态方法中的局部内部类,无法直接使用外部类中的成员属性
	public static void m1() {
		final int age = 19;
		class InnerClass {
			// public static void m1(){}
			public void m3() {
				System.out.println(age);
				System.out.println(s1);
				// System.out.println(s2);
			}
		}
	}

	// 成员方法中的内部类,可以直接访问外部类中的所有属性
	public void m2() {
		final int age = 19;
		// age = 2;
		class InnerClass {
			// public static void m1(){}
			public void m3() {
				System.out.println(age);
				System.out.println(s1);
				System.out.println(s2);
			}
		}
		// 局部内部类调用
		InnerClass i = new InnerClass();
		i.m3();
	}

匿名内部类:方法调用时,需要传入接口的实现类的对象时。
可以不写实现类,直接写匿名内部类

public class nullname {

	public static void main(String[] args) {
		// 覆写?
		test(new User() {
			// 优点:少搞一个类,访问外部类私有化
			// 缺点:无法复用
			@Override
			public void login() {
				// TODO Auto-generated method stub

			}
		});
	}

	public static void test(User user) {
		user.login();
	}

}

interface User {
	public void login();
}

成员内部类

public static void main(String[] args) {
		// 1 创建外部类对象
		OuterClass_01 o = new OuterClass_01();
		// 2 创建内部类对象
		InnerClass inner = o.new InnerClass();
		// 3 访问属性
		inner.m1();
	}

可以使用访问权限控制修饰符
在成员内部类中不能有静态声明
内部类类名 编译之后 : 外部类类名$内部类类名

静态内部类

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();
	}

设计模式:前辈们对代码开发经验的总结,是解决特定问题的一系列套路
于是就总结出来,形成固定的结构,该结构一般代表了最佳的实现方式
让当前类只能被创建一个实例化对象
1要控制创建对象的数量,也就意味着不能让客户,直接操作构造方法
所以需要构造方法私有化2对外提供一个用于获取对象的方法没有入参,
出参是当前类类型的静态方法
3创建一个静态变量,用来保存实例化之后的对象
结合对象的创建时机不同,又分为两种情况
1加载阶段就创建对象,称为饿汉模式
2用到的时候,再创建对象,称为懒汉模式
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值