在尚马的第十天

本文详细介绍了Java中的多态性,包括父类引用指向子类对象的概念,调用方法的规则以及动态绑定机制。此外,还讲解了抽象类的特性,如抽象方法、抽象类的声明与使用,以及不能实例化等要点。最后,讨论了接口的作用,包括抽象方法、默认方法和静态方法,并强调了类实现接口时必须实现所有抽象方法。
摘要由CSDN通过智能技术生成

因为河南疫情,停课一周,所以今天是在厨房学习

多态


多态

型)
意思是
你看这个
Animal a=new cat();
Animal是父类,cat是子类,把父类引用指向子类对象
父类在上面,子类在下面
就类似于
把子类升级到父类了 把父类引用指向子类,
就相当于向上转了

调用方法规则
1、可以调用父类中的所有成员
2、但是不能调用子类中的特有成员(因为在编译阶段,能调用哪些成员是有变异类型来决定的)
3、最终运行效果看子类(运行类型)的具体实现,按照从子类(运行类型)开始查找方法,然后调用,子类没有找父类,父类没有找爷爷类

向下转型

Car cat=(Cat) anmial;
作用和直接创建cat对象一样,但是好处强转不用开辟新对象,创建cat的话,父类引用anmial指向的子类对象就浪费了

就是强制将一个指向子类对象的父类引用,传递给匹配子类对象的子类引用

访问属性看编译类型

动态绑定机制


1、当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定
2、当调用对象属性时,没有动态绑定机制,那里声明哪里使用

3、先搞懂静态是干嘛的

静态的定义:某些特定的数据在内存空间中只有一份,类似于共享,就是中国人对象都有一个国籍叫中国

静态变量 就是类变量

静态的使用:用static 修饰的成员变量一般用 类名.成员名 来修饰

静态使用的注意事项:
1、
5、1.静态的方法中不能使用this关键字。super关键字
6、开发中,如何确定一个方法是否要声明为static
1.操作静态属性的方法,通常设置为static 不然就要new一个对象,然后对象.方法
2.工具类的方法,比如Math.pi pi是静态量,Math就是类名

4、父类是形参 子类是实参 这里我还是没看懂,粗略的理解为形参指向了实参,先这样吧

懂了 父类是形参,子类是实参 说白了就是 形参=实参 和 父类引用指向子类对象那个一样

instanceof 这个是对比是不是父对象的

多态数组:为什么 父类引用可以指向子类数组 数组是地址,我也不太明白
数组里面放的是对象引用
对象数组

抽象


1、父类具有不确定性,就是你之前写的那些没有用的 父类方法比如动物吃,反正后面都需要方法重构的那种

2、考虑将该方法设计为抽象(abstract)方法

3、所谓抽象方法就是没有实现的方法

4、当一个类中存在抽象方法时,需要将该类声明为abstract类

5、一般来说,抽象类会被继承,有其子类实现抽象方法

6、用abstract关键字修饰一个类时,这个类就叫抽象类
访问修饰符 abstract 返回类型 方法名(参数列表)
没有方法体

7、抽象类的价值更多作用是在于设计,是设计者设计好后,让子类继承并实现抽象类

8、抽象类,是考官比较爱问的知识点,在框架和设计模式使用较多

注意事项

1、抽象类不能被实例化
2、抽象类不一定要包含abstract方法,也就是说抽象类可以没有abstract方法,但是反过来不行
3、一旦类包含了abstract方法,则这个类必须声明为abstract
4、abstract只能修饰类和方法,不能修饰属性和其他的

5、抽象类本质还是类,抽象类可以有任何成员,比如:非抽象方法、构造器、静态属性等等

6、抽象方法不能有主体,即不能实现

7、如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为abstract类

8、抽象方法不能使用private、final、static来修饰,因为这些关键字都是和重写想违背的

加油啊,晚上看了嘉然,现在估计要熬夜了,今晚肝到2点也要把抽象和接口看完了

接口

1、interface 接口名{
属性
方法(1.抽象方法 2.默认default方法 3.静态方法)
}

class 类名 implements 接口{
自己属性
自己方法
必须实现接口中的所有抽象方法
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值