灵雪java13
day13
今日内容:
引用类型的转换
多态的转型分为向上转型与向下转型两种情况:
向上转型:多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的。当父类引用指向一个子类对象的时候,便是向上转型
格式:父类类型 变量名 = new 子类类型();
如:Animal animal = new Cat();
向下转型:父类类型向子类类型向下转换的过程,这个过程是强制的,一个已经向上转型的子类对象,将父类引用转为子类引用,可以使用
强制类型转换的格式,便是向下转型
格式;
子类类型 变量名 =(子类类型)父类变量名;
如:Cat cat = (Cat)animal;
为什么要转型?
当使用多态方式调用方法时,首先会检查父类中是否含有该方法,如果没有则编译错误,
进一步说,不能直接调用子类拥有而父类没有的方法。
所以想要调动子类特有的方法必须向下转型。
转型的异常:
两个类型没有任何继承关系,不符合类型转换的定义
为了避免ClassCastException的发生,java提供了instanceof关键字,给引用变量做类型的校验。
格式:
变量名 instanceof 数据类型
如果变量属于该数据类型,则返回true;
如果该变量不属于该数据类型 返回false;
内部类:
在描述事物时,若一个事物内部还包含其他事物时,就可以使用内部类这种结构。
什么是内部类:将一个类a定义在另一个类b里面,里面的那个类a就称为内部类,类b就称为外部类。
成员内部类:定义在类中方法外的类,
格式:public class OuterClassName{
class InnerClassName{
}
}
如;汽车事物和引擎事物
car就是外部类 Engine就是内部类
public class Car{
class Engine{
}
public void move(){
}
}
访问特点:
1.内部类可以直接访问外部类的成员,包括私有成员,
2.外部类要访问内部类的成员,必须要建立在内部类的对象基础上,
创建内部类对象的格式:
外部类名.内部类名 对象名 = new 外部类型().new 内部类型();
代码演示:
备注:内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是
.class文件的名称是:外部类名
内
部
类
名
如
B
o
d
y
内部类名 如Body
内部类名如BodyHeart.class
匿名内部类(重点)
匿名内部类:shi内部类的一种简化写法,他的本质是一个(带具体实现的)(父类或者父接口)(匿名)子类的对象
在开发中,最长用的内部类就是匿名内部类
示例:
以接口举例,当你使用一个接口的时候,你需要做如下操作:
1.定义子类
2.重写接口中的方法
3.创建子类对象
4.调用重写后的方法
我们的目的就是想调用接口中的某个方法,以上4步可以简化成一部操作
前提条件:匿名内部类必须是继承一个父类或者实现一个父接口
格式:
new 父类名 或者 父接口名(){
//方法的重写
@override
public void method(){
//方法体内容
}
}
举例:
以接口为例,匿名内部类的使用。
本文地址:https://blog.csdn.net/weixin_42555469/article/details/110220066