`
jianchen
  • 浏览: 335448 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java基础复习(9)--继承与多态的理解

阅读更多

  继承与多态

 

 

继承;
java中所有类的父类Object
构造方法无法被继承。
方法的覆盖:返回值不同无法构成方法的覆盖。
访问修饰符访问级别:
public>protected>default>private

在覆盖父类的方法时:
子类的覆写方法的修饰符不能低于父类的对应方法的访问修饰符。
如:
public class Animal{
protected void sleep(){
 System.out.println("Animal");
    }
}
public class Person extends Animal{
private void sleep(){  
  System.out.println("Person");
}
}
 
 
分析:还是按照多态来理解。
假如有这样一个方法
void test(Animal a){
  a.sleep();
}
假设编译没问题,对于Animal类型而言,它的sleep方法具有相应的可见性(test方法属于 位于同一个包中的某类)。但如果传给test方法的是Person实例,则根据多态会调用person类的sleep()方法,而该方法却是私有的,无法 调用,这就导致了问题。所以可以反正以上观点。java语言也就规定以上约束。
 
super关键字
在java类中使用super来引用父类的成分
--super可用于访问父类中定义的属性
--super可用于调用父类中定义的成员方法
--super可用于在子类构造器中调用父类的构造器
--super的追溯不仅于直接父类
super()一定放在构造函数的第一行。
构造器 (默认构造器和自定义构造器)
类如果提供了非默认构造函数,则编译器不提供默认构造器,除非在定义类时未指定任何构造器。
如:

public class Base{
public Base(int i){}
}
public class Sub extends Base{
} //该类编译报错,父类没有默认构造器,子类的默认构造器找不到父类的默认构造器
 

重载:
方法名相同(参数类表不同),只能利用参数类型和参数个数的不同来重写方法。
 
**方法的覆盖:返回值不同无法构成方法的覆盖。**
 
证明 为什么重写方法不能依赖返回值的不同。
使用反证法:假如假设成立的话,

父类:
public class Base{
   public int test(){
     return 1;
   }
}
子类:
public class Sub extends Base{
    public String test(){
      return "test";
    }
}
 
测试:
public class Test{
  public static void main(String[] args){
    Base b = new Sub();
    int i = b.test();
  }
}
 

 

分析:

假设可以这样写,从语法和语义角度看没有问题。运行时,b虽然声明为Base类型,但它的真正实例为Sub类型。这样根据多态,调用 b.test()应该使用子类的test方法,这样就返回一个String,这样程序便会出现转换异常,所以这样写会导致程序的不安全性,所以假设不成 立,问题得证。

进一步的补充:

 

父类:
public class Base {
public Object test(){
    return "base";
}
}
子类:
public class Sub extends Base{
    public String test(){
        return "sub";
    }
}

测试:
 Base o = new Sub();
 System.out.println(o.test());
 



打印输出:
sub

分析:子类覆盖的方法的返回值是父类该方法的extension,这样在多态情况下没有问题。也能实现覆盖了。所以上面的方法返回值的约束可以做点修正哈。

分享到:
评论

相关推荐

    Java中的继承和多态.pdf

    Java中的继承和多态.pdf 学习资料 复习资料 教学资源

    Java语言程序设计 基础篇梁勇part5-4

    基础篇主要介绍基本程序设计、语法结构、面向对象程序设计、继承和多态、异常处理和文本I/O、抽象类和接口等内容。 本书可作为高等院校相关专业程序设计课程的基础教材,也可作为Java语言及编程爱好者的参考资料

    Java语言程序设计 基础篇梁勇part5-3

    基础篇主要介绍基本程序设计、语法结构、面向对象程序设计、继承和多态、异常处理和文本I/O、抽象类和接口等内容。 本书可作为高等院校相关专业程序设计课程的基础教材,也可作为Java语言及编程爱好者的参考资料

    Java工程师面试复习指南

    【Java工程师面试复习指南】本仓库架构大部分Java工程师所需要掌握的核心知识,整合了互联网上的很多优质Java技术文章,力求打造为最完整最实用的Java开发者学习指南,如果对你有帮助,给个star告诉我吧,谢谢!...

    《Java基础复习》—常识与入门

    Java面向对象的核心逻辑:OOP(面向对象编程)、封装、继承、多态、接口。。。。。。 JavaSE高级应用程序:异常、集合、线程、IO、反射、网络 二、常识与概述 计算机能直接识别的是机器指令,机器指令的封装是汇编语言...

    java语言程序设计 基础篇原书第10版part1

    基础篇主要介绍基本程序设计、语法结构、面向对象程序设计、继承和多态、异常处理和文本I/O、抽象类和接口等内容。 本书可作为高等院校相关专业程序设计课程的基础教材,也可作为Java语言及编程爱好者的参考资料

    Java基础(韩顺平版)笔记详

    面向对象编程:类和对象、继承、封装、多态 异常处理机制 集合框架:List、Set、Map等 输入输出(I/O):文件操作 多线程和并发编程基础 Java基础类库:实用工具类和日期时间API JDBC数据库操作 适用人群 计算机专业...

    java期末复习资料与习题

    针对大学生或java免试群体的java复习资料和提纲

    Javaoop课程总复习

    关于java对面对象的自己总复习 关于1继承。封装 多态、异常、接口 JDBC有关总结

    Java语言程序设计 基础篇梁勇part5-1

    基础篇主要介绍基本程序设计、语法结构、面向对象程序设计、继承和多态、异常处理和文本I/O、抽象类和接口等内容。 本书可作为高等院校相关专业程序设计课程的基础教材,也可作为Java语言及编程爱好者的参考资料

    Java语言程序设计 基础篇梁勇part5-2

    基础篇主要介绍基本程序设计、语法结构、面向对象程序设计、继承和多态、异常处理和文本I/O、抽象类和接口等内容。 本书可作为高等院校相关专业程序设计课程的基础教材,也可作为Java语言及编程爱好者的参考资料

    Java语言程序设计 基础篇梁勇part5-5

    基础篇主要介绍基本程序设计、语法结构、面向对象程序设计、继承和多态、异常处理和文本I/O、抽象类和接口等内容。 本书可作为高等院校相关专业程序设计课程的基础教材,也可作为Java语言及编程爱好者的参考资料

    Java复习大纲面试题.doc

    封装、继承、多态 8.Java实现多态性的机制是什么? 有继承 有方法重写 父类引用指向子类对象 9.什么是方法重载?什么是方法重写?方法重载与方法重写的区别? 方法重载(Overload):是指方法名字相同,参数的个数、...

    java语言程序设计 基础篇原书第10版part2

    基础篇主要介绍基本程序设计、语法结构、面向对象程序设计、继承和多态、异常处理和文本I/O、抽象类和接口等内容。 本书可作为高等院校相关专业程序设计课程的基础教材,也可作为Java语言及编程爱好者的参考资料

    Java领域基础部分JavaSE笔记

    面向对象编程(OOP)基础(类,对象,继承,封装,多态) 异常处理 泛型 基本的输入输出(I/O) 线程和并发 Java集合框架(List, Set, Map等) 适用人群 初学者:对编程感兴趣,希望从基础学起的新手。 在校学生:...

    AIC的Java课程1-6章

    第3版 机械工业出版社  教学内容和要求 知识点 重要程度 使用频度 难度 Java 入门 高 中 易 变量和运算符 高 高 中 控制结构 高 高 易 数组 高 高 中 方法 很高 高 中 封装 很高 很高 难...

    《Java语言程序设计与数据结构(第11版) 》(英文版)

    本书是Java语言的经典教材,中文版分为基础篇和进阶篇,主要介绍程序设计基础、面向对象程序设计、...基础篇主要介绍基本程序设计、语法结构、面向对象程序设计、继承和多态、异常处理和文本I/O、抽象类和接口等内容。

    JAVA基础课程讲义

    附录(面试前复习一下!!) 111 冒泡排序 111 二分法查找 112 命令行参数的问题 113 增强for循环 114 思考作业 114 上机作业 115 第六章 常用类的使用 117 基本数据类型的包装类 117 包装类基本知识 117 包装类的用途...

    Java面向对象知识点梳理(思维导图)

    导图中包含了类、对象、继承、多态、封装等基本概念,同时也包括了接口、抽象类、异常处理、泛型等高级特性。这个导图可以帮助学习者系统地理解和掌握Java面向对象编程的核心概念,以及各种相关的语法和用法。 适用...

    【笔记式】Java快速入门77课时--多态接口内部类篇(含200条笔记+60个实例)

    多态与接口 4.内部类 课程亮点: 笔记加案例详细讲解Java入门知识!!!提供详细的笔记作为辅助工具,2000多条笔记帮助学员快速掌握Java150多个知识点 课程特色: 笔记JAVA:用200条笔记串连所有知识点,让学员从...

Global site tag (gtag.js) - Google Analytics