日更,教你如何一步步成为java软件工程师——权限修饰符,方法的重写,super关键字与final关键字,Object类与equals方法,多态,引用数据类型的转化,抽象方法与抽象类

权限修饰符

  • 注意:

以上权限修饰符只能修饰成员(static),成员修饰符(成员变量|成员方法)
private的内容不能被继承
只有public和default能修饰类,并且default默认出现

  • protected的访问权限:
    1、同包下的类
    2、不同包的子类,并且只能通过子父类关系访问,只有子类中才可以使用

重写

  • 重写 和 重载之间的区别:
    重写和重载都是指方法

  • 满足重载的条件:
    1、同一个类中有多个方法
    2、方法名字相同
    3、参数列表不同(方法签名不同)

  • 满足重写的条件:
    1、不同的类
    2、继承关系(实现关系)
    3、方法签名相同(方法名+参数列表)

  • 注意:
    如果存在方法的重写,再调用的时候调用的是子类中重写的方法
    重写方法会对父类中被重写的方法进行屏蔽

  • 如何检查方法的重写:
    1、左边会有一个向上的三角
    2、强制检查 @Override

  • 使用重写时应注意:
    == :方法签名
    <= : 返回值类型 :基本数据类型完全相同 引用数据类型:子类<=父类
    >= : 权限修饰符:子类>=父类的权限修饰符

  • 不能被重写的情况:
    1、被private修饰的方法不能被重写
    2、被final修饰的方法不能被重写
    3、被static修饰的方法不能被重写
    如果子父类中的同名方法,父类中是静态的,子类中的同名方法要求也要被static修饰

super关键字

  • super和this的区别:
    this 指代当前new的对象
    super 指代父类对象

  • super的作用:
    1、super用在构造器的首行调用父类中的构造器
    语法:super(参数列表)
    必须要使用再首行,没有没有显示调用父类中其他构造器,默认调用父类空构造

2、 super区分子父类中同名的成员
如果不存在子父类中同名成员问题,可以省略,默认之类中的找子类,父类中的找父类
如果存在子父类中同名成员,并且想要调用父类中的成员,使用super表示父类对象,否则默认子类(就近原则)

  • 注意:
    创建对象是先父类后子类
    先静态后成员

final关键字:最终的

final修饰变量为常量
final修饰的方法不能被重写
final修饰的类不能被继承(太监类)
final修饰的是引用数据类型,对象的地址不能变,但是可以改变对象的成员

Object类(老祖宗类)

Object类是java中所有类的根基类
java中的所有类都会直接或者间接的继承自Object类

  • toString() 方法
    当打印一个对象的引用时候,默认调用对象的toString()
    当打印一个对象,其实是想要看对象的所有属性的值
    重写toString()方法,自定义输出对象属性的内容,实现打印对象的属性值,不打印地址,默认打印的对象的地址,因为默认调用Object类型的toString()

  • equals方法
    equals 和 ==的区别:
    == 比较对象的地址的是否相同
    equals如果子类中没有重写,默认调用Object类中的equals方法,比较的是地址,但是可以重写,自定义比较规则,按照内容比较对象是否相同

多态: 面向对象的三大特性之一

多态:一种事物的多种形态,多种表示形式

  • 多态的前提:
    1、类的继承
    2、接口的实现

  • 多态的最终体现:父类的引用指向子类的对象

  • 多态的目的:
    1、父类的引用在如果调用子父类中都有的方法,调用的是子类中重写的方法
    2、子类的新增方法对父类引用不可见

  • 多态使用成员:
    成员变量: 编译运行看父类
    成员方法: 编译看父类(类型)(左边),运行看子类(找对象)(右边)

  • 转型:引用数据类型
    小范围类型->子类
    大范围类型–>父类
    方法:
    1、向上转型:(自动类型提升)
    2、向下转型:(强制类型转换)

  • ClassCastException 类型转换异常
    instanceof 运算符
    语法:A instanceof B
    判断A引用是否是B类型的对象(是否是B类型子类的对象),如果是返回true,如果不是返回false
    编译的时候只检查A和B是否在一条继承链上

抽象方法:

使用abstract关键修饰的方法为抽象方法
特点:1、没有方法体
2、必须存在与抽象类中

抽象类:

abstract修饰的类就是抽象类

  • 注意:
    1、抽象类不能实例化
    2、抽象方法一定要存在抽象类中
    3、抽象方法一定要被重写才能使用
    4、抽象类中可以存在抽象方法、可以存在实例方法
    5、使用抽象类中的内容:通过子类
    具体子类:重写抽象父类中的所有抽想方法+按需新增方法
    抽象子类:按需重写抽象方法+按需新增
    6、一个抽象方法如果被重写过就不需要再次被重写了,但是也可以重写
    7、abstract不能和private,final,static和native不能一起使用

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树Java的基本语法Java中的关键字91534 人正在系统学习中

来源:ZiJinTianLin

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年5月1日
下一篇 2019年5月1日

相关推荐