教你如何正确了解java三大特性!!!!

 更新时间:2021年07月02日 10:40:29   作者:Ultraman_Cosmos  
所有的面向对象编程语言的思路都是差不多的,而这三大特性,则是思路中的支柱点,接下来我就重点讲解了一下java三大特性,感兴趣的朋友跟随脚本之家小编一起看看吧

继承与多态

本章讲解面向对象的三大特性:封装,继承,多态。

一.包

Java定义了一种名字空间,称之为包:package。一个类总是属于某个包,类名(比如Person)只是一个简写,真正的完整类名是 包名.类名。例如:apple 类放在包 banana 里面 完整类名是:banana.apple。

自定义包的语法:

package<   包名   >

注意:声明一个包必须写在类的第一行。

1.2 包的导入

如果要使用java中存在的包,可以在程序中使用import语句导入包。

格式如下:(注意中间有一个小点)

import<  包名  >.<  类名  >

如果要导入一个包中的多个类,可以使用"*"表示包中所有的类。如上个例子完整代码为:import banana.*。

 二.继承

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

继承的作用:通过继承可以快速创建新的类,实现代码的重用,提高程序的可维护性,节省大量创建新类的时间,提高开发效率和开发质量。

java的继承语法格式如下:

[修饰符]  class 子类名 [extends 父类名]{
        //类定义部分
}

例如:banana是一个类,apple是一个类,将banana设为apple的父类

public class apple extends banana{
        //内容
}

注意!1.java中的继承为单继承,即一个子类只能有一个直接的父类。

           2.子类不能选择性继承父类;

           3.Java不支持多重继承,但一个类可以实现多个接口,从而克服单继承的缺点;

           4.构造方法不会被子类继承,但可以从子类中调用父类的构造方法。

 三:重载和重写

3.1重载(Overload)

同一个类中,同名的方法有不同的参数列表(参数类型不同,参数个数不同,甚至是参数顺序不同)即为重载,重载对返回类型无要求,可以相同,也可以不同,但不能通过返回类型是否相同来判断重载.

注意以下几点:

(1)同一类中方法名相同,参数列表不同。

(2)返回值类型不能用于区分方法的重载。

提醒:构造方法也可以实现方法的重载

3.2 重写

重写,即重新写一遍。即在子类中把父类本身具有的方法重新写一次。子类扩展了父类,子类是一个特殊的父类。子类以父类为基础,额外增加新的属性和方法。

重写的规则:

1.发生在之类与父类之间

2.父类中的私有方法不能被重写

3.重写父类方法时,访问权限不能比父类低,抛出异常不能比父类的异常范围广或抛出新的异常

4.父类有静态方法时,子类必须通过静态方法进行重写

重载与重写的区别:

1.重载发生在一个类里面

2.重写发生在父类与子类之间。

四:多态

多态指同一操作作用于不同对象,可以有不同的解释,以致产生不同的执行结果。

多态体现为父类引用变量可以指向子类对象

前提条件:必须要有子父类关系。

注意:在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。

4.1 多态的转型  

多态的转型分为向上转型向下转型两种:

向上转型:多态本身就是向上转型过的过程

使用格式:

父类类型 变量名=new 子类类型();

适用场景:当不需要面对子类类型时,通过提高扩展性,或者使用父类的功能就能完成相应的操作。

向下转型:一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用类型转为子类引用各类型

4.2 instanceof

instanceof运算符的前一个操作数通常是一个引用类型变量,后一个操作数通常是一个类,它用于判断运算符前面的引用变量是否是运算符后面的类型或其子类型的实例。

注意!使用instanceof运算符时,需要注意instancecof运算符前面操作数的编译时,类型要么与后面的类相同,要么与后面的类具有父子继承关系,否则会引起编译失误。

总结

本篇文章就到这里了,希望可以给你带来一些帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • Springboot单元测试编写实践

    Springboot单元测试编写实践

    在日常的开发过程中,为了提高代码的可靠性和健壮性,同时也是检测代码的质量,减少测试环节的问题,会对完成的业务功能代码编写单元测试,在本文中,将分享一些单元测试的实践和心得,需要的朋友可以参考下
    2023-11-11
  • Mybatis传入List实现批量更新的示例代码

    Mybatis传入List实现批量更新的示例代码

    这篇文章主要介绍了Mybatis传入List实现批量更新的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Java之获取客户端真实IP地址的实现

    Java之获取客户端真实IP地址的实现

    在开发工作中,我们常常需要获取客户端的IP,本文主要介绍了Jav之获取客户端真实IP地址的实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • RocketMQ Broker实现高可用高并发的消息中转服务

    RocketMQ Broker实现高可用高并发的消息中转服务

    RocketMQ消息代理(Broker)是一种高可用、高并发的消息中转服务,能够接收并存储生产者发送的消息,并将消息发送给消费者。它具有多种消息存储模式和消息传递模式,支持水平扩展和故障转移等特性,可以为分布式应用提供可靠的消息传递服务
    2023-04-04
  • SpringBoot+Redis实现数据字典的方法

    SpringBoot+Redis实现数据字典的方法

    这篇文章主要介绍了SpringBoot+Redis实现数据字典的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 代理模式之Java动态代理实现方法

    代理模式之Java动态代理实现方法

    今天一个偶然的机会我突然想看看JDK的动态代理,因为以前也知道一点,而且只是简单的想测试一下使用,使用很快里就写好了这么几个接口和类,需要的朋友可以参考下
    2012-11-11
  • 解决使用security和静态资源被拦截的问题

    解决使用security和静态资源被拦截的问题

    这篇文章主要介绍了解决使用security和静态资源被拦截的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • jdk中动态代理异常处理分析:UndeclaredThrowableException

    jdk中动态代理异常处理分析:UndeclaredThrowableException

    最近在工作中遇到了报UndeclaredThrowableException的错误,通过查找相关的资料,终于解决了,所以这篇文章主要给大家介绍了关于jdk中动态代理异常处理分析:UndeclaredThrowableException的相关资料,需要的朋友可以参考下
    2018-04-04
  • Java笔记之从IO模型到Netty框架学习初识篇

    Java笔记之从IO模型到Netty框架学习初识篇

    Netty作为一个已经发展了十多年的框架,已然非常成熟了,其中有大量的细节是普通使用者不知道或者不关心的,本文带你查缺补漏掌握Netty的使用
    2022-03-03
  • Java接口返回省市区树形结构的实现

    Java接口返回省市区树形结构的实现

    本文主要介绍了Java接口返回省市区树形结构的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01

最新评论