类的关系与继承

/*
类的关系 类的继承
类和类之间的关系
A is-a B 泛化(继承 实现)
A has-a B 包含(组合 聚合 关联)
A use-a B 依赖(need-a)

	继承
	1.子类继承父类 通过关键字extends
	2.子类的对象可以调用父类的public protected属性和方法 当做自己的来用
	3.子类可以添加自己独有的属性和方法
	4.子类从父类中继承过来的方法不能满足子类需要 可以在子类中重写方法
	5.每一个类都有继承类 如果不写extends关键字 默认继承Object
	6.在java中继承是单个存在的(单继承)每一个类智能有一个继承的类(在extends关键字后面只能写一个类)
		可以通过传递的方式实现多继承的效果 后续还有多实现来完成类似的效果
	7.继承在内存中的存储形式		
	8.this(代替是当前调用方法属性时的那个对象 不一定是当前类的对象)
	  super代替的是当前执行方法时的对象的父亲对象
	  this代替的是当前执行方法时的那个对象 不一定对是当前类的
	  都能调用一般属性和一般方法
	  可以放置在类成员的任意位置(属性 方法 构造 块)
	  可以调用构造方法(放在构造方法的第一行)
		this和super在构构造方法中调用另一个构造方法时不能出现在第一行
		构造方法之间不能来回互相调用(编译时就会卡住)
		三目运算符
		(a>b)?x:y;---->if(a>b){
							x
						}else{
							y
						}
	Object类中的方法
			hashCode();			将对象在内存中的地址经过计算得出的整数
									public native int hashCode();
			getClass();			获取对象对应类的类映射(反射)
			toString();			打印输出时将对象变成String字符串
								public String toString(){
									return this.getClass().getName()+"@"+Integer.toHexString(this.hashCode)
								}
			equals();			
								用来比较两个对象的内容 Object默认效果==
								==可以用来比较基本类型 可以比较引用类型
								equals方法时Object类中继承过来的方法  默认效果比较地址
								如果想要改变其规则 可以进行方法重写
									public boolean equals(Object obj){
										return(this==obj)
									}
			wait()				线程进入挂起等待状态 存在方法重载
			notify()			唤醒线程
			notifyAll()      	唤醒所有线程
			finalize()  		权限修饰符是protected 在对象呗GC回收的时候 默认调用执行的方法
			clone()			 	权限修饰符是protected 为了克隆对象
	  方法重写override  						方法重载overload
	  1.类 产生两个继承关系的类   					一个类中的一组方法
	  2.权限 子类可以大于父类	 					没有要求
	  3.特征 final static abstract 					没有要求
			父类方法是final 子类不能重写
			父类的方法是static 子类不存在
			父类方法是abstra 子类必须重写
			(子类是具体必须重写 否则子类是抽象类 可以不重写)
	  4.返回值 子类可以小于等于父类					没有要求	
	  5.名字	子类和父类一致						一个类的好多方法名必须一致
	  6.参数	子类和父类一致						每一个方法的参数必须不一致
	  7.异常	运行时 编译时						没有要求
				如果父类方法抛出运行时异常
				子类可以不予理会
				如果父类方法抛出编译时异常
				子类抛出异常的个数少于等于父类
				子类抛出异常的类型小于等于父类
	  8.方法体	子类的方法内容与父类不一致			每一个重载的方法 执行过程都不相同
	
	
	
	

*/
posted @ 2021-02-03 21:02  JAVA初当力  阅读(291)  评论(0编辑  收藏  举报