面对对象笔记

继承
	概述:如果多个类有共同的属性和行为,我们可以把这些属性行为抽取出来单独封装到以类中,
	让其他类去和这个类产生关系,这种关系就叫做继承,其中有共同属性和行为的类叫做父类,其他的类叫做子类
	
	语法:public class 子类名 extends 父类名{}
	
	优点:
			1:提高了代码的复用性
			2:提高了代码的维护性
	缺点:
			提高了类和类之间的耦合度
			
	java中的继承特点:
			1:只能单继承,不能多继承 但是可以多层继承
			2:如果一个类继承了某个父类,那么它可以继承该类中非私有的成员
			3:java中如果一个类 没有显性的定义它的父类 那么默认继承Object类 Object是java中所有类的根类
			
	this和super的区别:
			this是一个关键字 也是一个引用类型 保存了当前对象的内存地址 每个new出来的对象都有一个属于自己的this
			super只是一个关键字 不是引用类型 也没有保存任何一个对象的内存地址 只是用来访问父类数据的一种方式
			
	继承中成员的访问特点:
			成员变量(同名的变量)
				如果局部范围,成员范围 父类范围都有同名的变量,程序运行时遵循就近原则,先从局部->成员->父类
				如果指明要使用成员范围的变量:this.变量名
				如果指明要使用父类范围的变量:super.变量名
				
			成员方法(同名的方法)
				如果成员范围 父类范围都有同名的方法,程序运行时遵循就近原则,先从成员->父类
				如果指明要使用成员范围的方法:this.方法名();  注意:this可以省略
				如果指明要使用父类范围的方法:super.方法名();
			
			构造方法
				this(...) 调用本类中的其他构造方法
				super(...) 调用父类的构造方法 在创建对象时 给父类中的数据初始化 虽然调用了父类的构造方法 但是不会创建父类对象
				
				注意:this()和super()不能同时出现,super()必须放在子类构造方法的第一行,如果是调用父类无参构造 那么可以省略
				
	方法的重写:
				发生在具有继承关系的两个父子类之间,如果父类的方法不能满足子类的需求 子类就可以对父类的方法进行修改 这就是重写
				1:必须有继承关系
				2:子类重写方法 只能修改方法体,方法的声明必须和父类中的方法的声明一致
				3:私有的方法不能被重写
				4:@Override 注解 表名该方法是对父类方法的重写

				重写toString()方法 每一个类都是Object的直接或间接子类,Object中的toString方法打印的是该类型对象的内存地址
				不能满足我们的需求,因为我们可以对其进行重写,一般都是将类型中的成员变量拼接成字符串返回
多态
				指的是同一个对象在不同时期表现出的不同的状态
				前提:
						1:有继承关系
						2:有方法的重写
						3:有父类型引用指向子类型对象
						
						语法:父类型 对象名 = new 子类型();
				常见的使用场景:定义方法的使用 参数列表定义的父类型,但是传参的时候传入的是子类型对象 System.out.println(Object obj)
				
				成员的使用特点:
						成员变量:编译看左 运行看左
						成员方法:编译看左 运行看右 不能直接使用子类中特有的成员方法
						
				类型转换:
						向上转型 upcasting		父类型 对象名 = new 子类型();
						向下转型 downcasting	子类型 对象名 = (子类型)原始对象名;
						
						注意:强转时需要注意:如果两者之间没有继承关系 那么强转时会引发类型转换异常 为了避免异常发生 在做强转之前
						最好先判断一下两者之间是否存在关系
						boolean flag = a instanceof b 
						如果flag 为true 那么就可以强转 否则不允许强转 
						
						

发布了25 篇原创文章 · 获赞 4 · 访问量 731

猜你喜欢

转载自blog.csdn.net/qq_43149023/article/details/91126021