Java面向对象:封装、继承与多态解析
需积分: 49 96 浏览量
更新于2024-09-08
收藏 229KB PDF 举报
"Java练习题,重点涵盖面向对象的三大特性:封装、继承和多态。题目涉及了数据隐藏、继承的基本语法、访问修饰符的作用、对象创建的过程、super关键字的使用、方法覆盖、多态的基本语法及应用,以及instanceof操作符和多态在参数与返回值上的体现。"
在Java编程中,面向对象的三大特性是封装、继承和多态,这些概念构成了Java类和对象的基础。
1. 封装/数据隐藏:封装是面向对象的核心特征之一,它通过访问控制修饰符(如private、public、protected)来限制对类成员的访问,实现数据的安全性。例如,将数据成员设为private可以防止外部直接修改,而通过public的getter和setter方法来读取和设置值,保证了数据的完整性和安全性。
2. 继承的基本语法:继承允许一个类(子类)从另一个类(父类)继承属性和行为,提高了代码的复用性。子类可以通过使用extends关键字来继承父类,例如`class Sub extends Super`。
3. 访问修饰符:访问修饰符决定类成员的可见性。public成员在任何地方都可以访问,private成员只能在本类内访问,protected成员在本包或子类中可访问,而默认(无修饰符)则只在本包内可访问。
4. 对象创建过程:创建一个对象时,首先会调用类的构造器(构造方法),初始化对象的状态。例如,`new Sub()`会先调用父类的无参构造器,然后执行子类的构造器。
5. super关键字:在子类中,super用来引用父类的对象,调用父类的成员。例如,`super(str)`会调用父类带参数的构造器。
6. 方法覆盖:当子类中定义的方法与父类中相同方法名、相同参数列表时,子类的方法会覆盖父类的方法。这在多态中扮演重要角色。
7. 多态的基本语法和使用:多态允许不同类型的对象对同一消息做出响应,即一个接口可以有多种实现。例如,子类对象可以被视为父类类型,`Sub s3 = new Sub(); Super s = s3;`,这样就可以调用父类中的公共方法。
8. instanceof操作符:用于判断对象是否属于某个类或其子类,返回boolean值。例如,`if (s instanceof Super) {...}`可以检查对象s是否是Super类或其子类的实例。
9. 多态用在参数和返回值上:在方法参数中,可以使用父类类型接收子类对象,实现方法的通用性。在返回值中,父类类型的返回值可以返回子类对象,这种设计提供了更大的灵活性。
针对给定的练习题:
1. 题目中的代码涉及了构造器的调用顺序和this、super关键字的使用。程序运行结果如下:
- `Subs1`创建时,先调用父类的无参构造器`Super()`,然后执行子类的无参构造器`Sub()`。
- `Subs2`创建时,首先调用子类的`this()`,然后执行父类的无参构造器`Super()`,最后执行子类的`Sub(int)`。
- `Subs3`创建时,调用`super(str)`,执行父类的`Super(String)`,然后执行子类的`Sub(String)`。
2. 代码展示了子类重写父类方法并调用父类方法的场景。`s.m1()`会先打印`m1()inSub`,然后通过`super.m1()`调用父类的`m1()`,所以`m1()`会打印两次。`s.m2()`因为没有被子类重写,所以直接调用父类的`m2()`。
3. 多态的示例中,子类Sub继承了Super,并重写了`method()`。创建Sub类的对象并调用`method()`,会执行子类的方法,输出`method() in Sub`。如果Super类的`method()`不是final的,那么子类可以覆盖它来实现自己的逻辑。
以上是对Java面向对象三大特性的详细解释,以及与题目相关的知识点分析。这些内容对于理解和掌握Java面向对象编程至关重要。
2020-03-11 上传
点击了解资源详情
2020-02-08 上传
shellxx
- 粉丝: 14
- 资源: 8
最新资源
- growth-record:学习各种语言和技术的过程记录
- Band-Playlist:一个简单的工具,可为您的果酱会议管理乐队的播放列表。 全部在Angularjs + Firebase中。 应用程序可以离线工作
- kiri-web:基里页面
- johnmansson.github.io:托管
- Druid源码(apache-druid-0.22.1-src.tar.gz)
- 基于Swing+jdbc+mysql的Java图书管理系统.zip
- 教育门户
- joshschmelzle:你好! 我是乔希
- 行业文档-设计装置-一种切葱花专用刀具.zip
- mondora-iron-router-rest-auth:IronRouter插件(可选)对服务器路由进行身份验证
- CloudComputingProject1SingleInstance
- dotandbox:点和盒游戏
- 如何使自己的程序自动更新(在线更新).zip
- airtable-lite:轻型安全的Airtable API客户端
- 广东工业大学 数据库课程设计.zip
- notocjk:适用于Android设备的NotoSansCJK和NotoSerifCJK完整补丁