欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java控制修饰符,子类与父类,组合重载覆盖等问题

程序员文章站 2022-03-27 22:32:22
本次主要针对以下几个问题:1.java的访问控制修饰符有哪些?各自有什么访问权限?如图所示:(1)public:表示该成员是公开的,其他所有类都可以访问(2)protected:表示该成员是受保护的,其子类可以访问protected里的成员,同时包中的其他类也可以访问该成员(3)private:表示该成员是私有的,只有该类内部才能访问(4)默认:包访问权限,包内部的类可以访问该成员可以用一个图来表示:2.子类对于父类继承的那些方法和属性是可见的?子类从父类继承的public和prot...

本次主要针对以下几个问题:
Java控制修饰符,子类与父类,组合重载覆盖等问题

1.java的访问控制修饰符有哪些?各自有什么访问权限?
如图所示:
Java控制修饰符,子类与父类,组合重载覆盖等问题
(1)public:表示该成员是公开的,其他所有类都可以访问
(2)protected:表示该成员是受保护的,其子类可以访问protected里的成员,同时包中的其他类也可以访问该成员
(3)private:表示该成员是私有的,只有该类内部才能访问
(4)默认:包访问权限,包内部的类可以访问该成员

可以用一个图来表示:
Java控制修饰符,子类与父类,组合重载覆盖等问题

2.子类对于父类继承的那些方法和属性是可见的?
子类从父类继承的public和protected成员是可见的,而继承的private成员是不可见的。
所谓可见简单来说就是能否直接调用,能直接调用则是可见的,否则不可见
例如:
Java控制修饰符,子类与父类,组合重载覆盖等问题
定义hello父类,然后s类继承,可以看到图中输出aa.id.是错误的,因为域变量id的修饰符为private,子类不能直接访问,对s类和其实例化对象来说,id便是不可见的,会出现如下错误提示:
Java控制修饰符,子类与父类,组合重载覆盖等问题
此时将private该成protected或者public,子类可以直接访问,可见,就会正确。
若是依旧用private要输出id便只有借助hello类的可见方法间接调用该域变量。

3.什么是组合?
简单来说组合就是某类的对象引用做另一个类的数据成员,相当于这个类是另一个类对象的一个属性!
例如:
Java控制修饰符,子类与父类,组合重载覆盖等问题
图中便是一个组合,而此处有了发消息的概念
发消息便是用来说明 使用引用的属性或方法便是调用对象的属性或方法的一个过程
如图中 s类的System.out.println(h.name),就是通过hello对象引用h调用了hello类的name属性

4.什么是重载?
在类中定义了多个同名而不同内容参数的成员方法时,称这些方法为重载
如图所示:
Java控制修饰符,子类与父类,组合重载覆盖等问题

类中有三个同名的方法,分别根据参数的个数和参数的不同实现不同的内容
需要注意的是,java中的重载不能只是返回值不同,编译不会通过;而c++可以

5.什么是覆盖?
子类对父类参数相同,返回类型相同的同名方法进行定义,这种多态便称为覆盖
例如:
Java控制修饰符,子类与父类,组合重载覆盖等问题
此时输出的为 s;因为父类的say方法被子类覆盖了,say方法被子类重新定义
Java控制修饰符,子类与父类,组合重载覆盖等问题
而如果不用覆盖,则输出的为 hello

希望浅显的说明对大家有帮助,有错误也欢迎大家指正,大家相互学习共同进步!

本文地址:https://blog.csdn.net/Believer_YU/article/details/109272897

相关标签: java