- 面向对象的特征:多态
- 链表
- 多态
- Animal animal =new Cat();
-
有父类对象指向子类引用
Dog dog =new Dog();
Animal animal=dog;(向上转型) animal =new Dog();
发生向下转型的前提要先向上转型才能通过强转转成子类类型
dog=(Dog)animal1; (强转 向下转)
关键字:instanceof 判断某一个对象是否是某一个类的实例
Public void feed(Animal animal){
If(animal instanceof Cat) {
Cat cat=(cat) animal;
cat.catchMouse();
(判断animla到底是不是猫)
}
else if(animal instanceof Dog){
Dog dog=(dog)animal;
Dog.look();
}
else{
sout(“不养”)
}
Object 返回值是object类型 传什么类型参数都行 入参Object一样
Public class Ch02{
Public Object show(object ... obj){
Return true;
}
If(object insstanceof Person)
{
Person person
Main
Ch02 ch02=new cho2()
Ch02.show(1,2,3,4....)
-
匿名对象:
Ch03 ch03 (声明一个ch03接值)= new Ch03();
new Ch03; (没声明接值的对象)可以调属性,调方法
Public class Ch03{
Pubic void show(){}
Main
new Ch03.show(); (对象.方法名 匿名对象)
匿名对象注意用于传参
匿名对象通常都是配合构造器的
对象只用一次的时候可以用匿名对象 不能存起来
Sout(teacher.go(new OfficeBuilding()));
节约资源,不需要栈
总结:
语法:new 类名
功能:和正常的有名字的对象的功能是相同的;
依然具备了调用属性,方法的功能
使用场景:多数用在传参,实参,多数情况下配合构造器直接传参
匿名对象的好处:可以节约栈的资源
-
链表(数据结构)
-
在内存中,数组和链表都是最基本的数据结构,表,或者线性表。
线性表:线性的结构 含有n>=0个节点的有限的序列 有且只有一个上一个节点,有且只有下一个节点 有头有尾的一条线
单向链表:在维护一个节点自身的值的同时,还有维护它的下一个值的指向(地址)
双向链表:在维护一个节点自身的值的同时,还有维护它的上一个和下一个值的指向