Java面向对象:封装、继承与多态解析

需积分: 49 4 下载量 119 浏览量 更新于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面向对象编程至关重要。
2014-05-29 上传