首页 / JAVA / java 多态 内部类 内部隐藏类
java 多态 内部类 内部隐藏类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java 多态 内部类 内部隐藏类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3869字,纯文字阅读大概需要6分钟。
内容图文
![java 多态 内部类 内部隐藏类](/upload/InfoBanner/zyjiaocheng/623/2c7cc427ea7248dbbf92b02c3029529f.jpg)
今日内容:
多态
内部类
多态:
多态是继 封装、继承之后,Java面向对象中的第三个特性
同一行为通过不同的事物,可以体现出来不同的形态.多态,描述的就是这样的状态.
定义:
多态:是指同一行为(方法),具有多个不同的表现形式.
前提:
1.继承或者实现【二选其一】
2.方法的重写【意义体现:不重写,无意义】
3.父类引用指向子类对象【格式体现】
class Human{}
class Man extends Human{}
class Test{
public static void main(String[] args){
Human human = new Man();
}
}
多态体现:
格式:
父类类型 变量名 = new 子类();
变量名.方法名();
父类类型:指子类对象继承的父类类型,或者实现的父接口类型
如:
Fu fu = new Zi();
fu.method();
备注:当你在使用多态的时候,程序会首先检查父类是否含有该方法,如果没有则编译错误
如果有该方法,执行的是子类重写之后的方法.
多态的好处:
在程序开发过程中,父类类型一般作为方法形式参数,传递子类对象给方法,进行方法调用,
更能体现多态的扩展性和便利性
总结:用于多态特性的支持,不仅仅是替代,在扩展性方面,无论之后再出现多少个子类,
我们不需要再重复的定义showXxxEat()方法,直接使用showAnimalEat()方法.
所以多态好处,体现在可以使程序编写更简单,并且有良好的扩展性.
引用类型的转换
多态的转型分为:
向上转型:多态本身是子类类型向父类类型 向上转换的过程,这个过程是默认的
当父类引用指向一个子类对象的时候,便是向上转型
格式:
父类类型 变量名 = new 子类类型();
如:Animal animal = new Cat();
向下转型:
向下转型:父类类型向子类类型向下转换的过程,这个过程是强制的.
一个已经向上转型的子类对象,将父类引用转为子类引用,
可以使用强制类型转化的格式,便是向下转型
格式:
子类类型 变量名 = (子类类型)父类变量名;
如:Cat cat = (Cat)animal;
为什么要转型呢?
当使用多态方式调用方法是,首先会检查父类中是否含有该方法,如果没有 则编译错误,
进一步说,不能直接调用子类拥有的方法,子类拥有而父类没有的方法.
所以想要调用子类特有的方法,必须向下转型
转型的异常:
两个类型没有任何继承关系,不符合类型转换的定义.
为了避免ClassCastException的发生,Java提供了instanceof关键字,给引用变量做类型的校验.
格式:
变量名 instanceof 数据类型
如果变量属于该数据类型 则返回true;
如果变量不属于该数据类型 则返回false.
内部类:
在描述事物时,若一个事物内部它还包含其他事物时,就可以使用内部类这种结构
什么是内部类?
将一个类A定义在另一个类B里面,里面的哪个类A称为内部类,类B则称为外部类
成员内部类:
成员内部类:定义在类中方法外的类
格式:
public class OuterClassName{
//...
class InnerClassName{
//...
}
//...
}
如:汽车事物和引擎事物 引擎在汽车事物的内部的
public class Car{//外部类
class Engine{//内部类
}
//成员方法 move()
public void move(){
System.out.println("汽车在运动!");
}
}
访问特点:
1.内部类 可以直接访问外部类的成员,包括私有成员
2.外部类 要访问内部类的成员,必须要建立在内部类的对象基础上.
创建内部类对象的格式:
外部类名.内部类名 对象名 = new 外部类型().new 内部类型();
代码演示:
备注:内部类仍然是一个独立的类,在编译后内部类会编译成独立的class文件
但是.class文件的名称是:外部类名$内部类名
如:Body$Heart.class
匿名内部类 【重点】
匿名内部类:是内部类的简化写法. 它的本质是一个【带具体实现的】【父类或者父接口】【匿名】子类的对象.
在开发中,最常用的内部类就是匿名内部类.
示例:
以接口举例,当你使用一个接口的时候,你需要做如下操作:
1.定义子类
2.重写接口中的方法
3.创建子类对象
4.调用重写后的方法
我们的目的就是想调用接口中的某个方法,以上四步可以简化成一步操作
前提:
匿名内部类必须是继承一个父类或者是实现一个父接口
格式:
new 父类名或者父接口名(){
//方法的重写
@Override
public void method(){
//方法体内容
}
}.method();
是一个对象
举例:
以接口为例,匿名内部类的使用.
内容总结
以上是互联网集市为您收集整理的java 多态 内部类 内部隐藏类全部内容,希望文章能够帮你解决java 多态 内部类 内部隐藏类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。