目录
九,类与类之间存在组合关系:has a 的关系,及接口的实现关系
一,包
1,类的全路径:包名.类名;
2,导入类
:import + 类的全路径; 如果需要导入一个包中的所有的类,import +包的全路径.*;(这种方法存在歧义,一般不推荐)
3,静态导入
import static 可以导入包中的静态方法和静态属性
4,包访问权限
默认访问权限default就为包访问权限,只在当前包中可见,子包中的类也不可见
二,三大特性
一,封装
使用private将方法和属性进行封装。具有保护性和易用性(通过程序对外提供的方法案例访问类中的属性)
什么是方法重载:在同一个类中,定义了若干个方法名相同,参数类型和个数不同的,与方法的返回值无关的一组方法叫做方法的重载。
二,继承
当类与类之间存在 is a 的关系时,那么他们之间天然存在继承关系。
当类A继承了另一个类B,类B的所有的属性和方法类A天然具备。A extends B : 使用extends实现A继承B。
一,继承的原则:
1,满足类鱼类之间是 is a 的关系
2,java只能单继承,只能继承一个父类,但是可以多层继承
3,子类会继承父类所有的属性和方法,显示继承(public修饰的属性和方法)隐式继承(private修饰的属性和方法),隐式继承也继承了所有的方法和属性,但无法直接使用。
二,显示继承:
三,隐式继承:
父类中被private修饰的属性,其实已经被子类继承,但是子类无法直接使用,必须通过父类的settor修改器和getter访问器来访问父类的属性,这种继承被称为隐式继承。
四,继承访问权限:protect
1,在不同包中的子类是可见的。
2,在不同包中的不具备继承关系的两个类之间,被protect修饰的属性,无法访问
3,protect修饰的属性,只在父类和子类还有同一父类在同一个包中的类可见。其余都不可见。在不同包中的不具备继承关系类中,创建的子类对象调用父类的protect属性,依旧不可见。
五,this关键字:
修饰属性:表示从当前类中找同名的属性
当有继承关系时,this关键字遵循就近原则,先从本类中找,找不到去父类中找,存在多重继承时,会一直向上寻找,知道找到该属性
修饰方法:表示从当前类中寻找方法
修饰对象:表示当前对象的引用
六,super关键字:
修饰属性:直接从父类中寻找同名属性
super关键字在多重继承中,如果直接父类中没有该属性,会向上寻找到最终父类。
修饰方法:
super修饰构造方法:
1,只要存在继承关系,所有父类对象优先于子类对象产生,多重继承时会产生所有父类的对象。
2,子类的构造方法默认调用父类的无参构造。如果父类不存在无参构造,则需要在子类构造方法中的首行,自己添加父类的构造方法:super(参数个数看情况而定);
3,无法在一个构造方法中同时使用 this(); super();因为他们必须都放在首行
super修饰普通方法:
1,super修饰普通方法就近原则
2,super不能表示当前对象分类的直接引用,this表示当前对象的直接引用。
七,要产生子类对象,默认先产生父类对象,先有父类才有子类
final:
修饰属性表示常量,无法修改
修饰类表示此类无法被继承
修饰方法,表示此方法不能被重写,
八,阿里校招笔试题:请问代码的输出顺序为啥。
九,类与类之间存在组合关系:has a 的关系,及接口的实现关系
三,多态
一,多态的概念:一个引用可以表现出多种行为/特性
多态(polymorphism)来源于希腊文字,意思是多种形式,简单来说就是父类变量可以引用子类对象。
向上转型:
向上转型最大的好处在于:参数统一化,减少冗余代码,即在父类中定义一个方法,其他子类直接继承使用。
最常见的多态:父类引用指向子类对象
向下转型:
将父类的引用强制转换成子类的引用。
规避向下转型的异常:instanceof关键字
instanceof关键字用来判断当前对象是否是相同该类产生的对象
语法: 对象名 instanceof 类名
二,方法的重写
发生在继承关系之间,除了权限修饰符不同,方法名,参数列表,返回值相同的方法,这样的一组方法被称为方法重写。
发生重写时:子类重写方法的权限 >= 父类方法权限
如果子类没有重写父类方法,就会就近调用父类的方法。
方法重写发生在普通方法,静态与对象无关,与类有关