首页 > 其他分享 >m1_day8

m1_day8

时间:2024-05-10 23:33:41浏览次数:47  
标签:day8 构造方法 子类 System m1 println 父类 方法

课程内容:
  • 多态

  • 方法重载

  • 方法覆盖

  • 构造方法

  • 扫描仪


多态:一个对象总有不同的类型去定义它
  • 作用一:创建对象 -》 父类类型 = new 子类对象();

    • Person x = new Teacher();

    • Animal y = new Cat();

    • 当我们使用多态创建完一个对象之后 这个对象只能调用父类和子类共有的属性/方法 一旦调用子类特有的属性/方法报错

    • 报错的原因:在编译阶段 编译器只看等号的左边进行语法检查

  • 作用二:放在参数里面用于解除代码之间的耦合度

    • 耦合度:代码之间的相互依赖程度

    • 方法定义的时候 参数传父类类型

    • 方法调用的时候 参数传子类对象


方法重载 方法过载 Overload
  • 面试题:方法重载需要哪些条件?

    • 需要发生在同一个类体中

    • 方法名需要一模一样

    • 方法的参数必须不同

      • 类型不同

      • 个数不同

      • 顺序不同

    • 方法重载对修饰符和返回类型没有要求 重点看参数 方法名 是否在同一个类中

  • 方法重载有什么作用?

    同时满足用户的不同需求

    System.out.println(); println();
    System.out.println(45); println(int)
    System.out.println(45.5); println(double)
    System.out.println(4500L); println(long)
    System.out.println('a'); println(char)
    System.out.println("a"); println(String)
    System.out.println(true); println(boolean)

方法覆盖 方法重写 Override
  • 方法覆盖的条件?

    需要发生在有继承关系的两个类中 而且是在子类里面发生的 子类在继承得到父类的方法之后 觉得父类的实现不好 于是在子类里面重新实现一下

  • 方法覆盖需要注意:

        public void test()throws Exception{}
        |           |
    脑袋 躯干 尾巴

    脑袋:子类的访问权限修饰符 >= 父类的权限
    Sun公司认为子类重新实现的方法应该更加优秀 更加优秀的     方法 应该给更多的人使用 这样才利于Java的发展

    躯干:返回类型 + 方法签名
    5.0之前 返回类型一模一样
    5.0开始 返回类型可以协变

    尾巴:异常处理部分 <= 父类的异常 [范围小于等于]
    异常:程序执行的过程中 可能会出现的隐患
    Sun公司认为子类重新实现的方法应该更加的优秀 更加优秀
    的方法不应该有更多的隐患
  • jdk5.0开始 方法覆盖的时候可以加上@Override

    • @Override注解 用来给机器看的 表示下面的方法一定会覆盖父类的某些方法

  • jdk5.0开始 方法覆盖的时候返回类型可以改变了

    • 可以变成父类方法返回类型的子类类型 -》 协变返回类型


构造方法:
  • 构造方法是创建对象的方法
  • 构造方法是创建对象的时候调用的方法-》收尾的工作
  • 构造方法的作用?

    构造方法语法的出现是为了方便程序员的开发
    它可以在创建对象的同时直接给属性赋值

    在Java中 任何一个类都有构造方法 即使我们没有写 系统也会提供一个默认的构造方法
    默认的构造方法:无参 空体 并没有对属性赋值
    如果我们想要在创建对象的同时直接给属性赋值的话 需要自己写一个构造方法
    不过一旦我们写出自己的构造方法之后 默认的构造方法将不再提供
  • 构造方法的特点

    1:构造方法没有返回类型 连void都不能写 -》 
    修饰符 + 方法签名(){}
    2:构造方法的名字需要和类名一模一样[通常首字母大写]
  • 构造方法的首行:

    • 默认super():表示要执行本构造方法之前 先去执行父类的构造方法 默认找父类的无参构造方法

      • 如果父类没有无参构造方法:-->说明父类中重新写了一个带参的构造方法

        • 提供父类的无参构造方法

        • 在super()里面传参数 指定他找哪一个构造方法

    • 还可以出现this(): 表示要执行本构造方法之前 先去执行本类的其他的构造方法 具体执行本类的哪一个构造方法 看参数类型

  • super()和this()都只能出现构造方法的首行

    • 因此super()和this()只能在一个构造方法中出现其中的一个

  • 面试题:

    • 构造方法能不能被子类继承 ?不可以

    • 构造方法能不能方法重载?可以

    • 构造方法能不能方法覆盖?不可以 覆盖的前提是需要先继承得到 构造方法不能被子类继承 因此不能被覆盖


扫描仪:Scanner

标签:day8,构造方法,子类,System,m1,println,父类,方法
From: https://www.cnblogs.com/zhaodenghui33/p/18185482

相关文章

  • m1_day7
    课程内容:数组的排序引用数据类型的数组面向对象封装继承多态数组的排序:手动排序冒泡排序*自动排序Arrays.sort(数组对象);只能升序排序importjava.util.*;引用数据类型的数组:当我们创建一个引用数据类型的数组的时候其实里......
  • m1_day9
    课程内容:参数传递变量的共享方法封装的意义参数传递:Java中只有值传递Java中的基本数据类型传值引用数据类型传地址......
  • m1_day10
    课程内容:String类常见的面试题String类常见的20个方法String类常见的面试题:new和不new之间的区别?Stringx="etoak"; Stringy=newString("etoak");不new的方式涉及到常量池查找机制永远先去常量池查看是否缓存过如果缓存过那么直接将值取出来使用如果没......
  • m1_day12
    课程内容:单例模式:Java中的接口单例模式:控制一个类有且只有一个对象醉汉式私有化构造方法防止外界随意的创建对象创建一个私有的静态的属于本类类型的对象提供一个公共的静态的返回本类对象的方法懒汉式-》尚不完善Java中的接口:interface相......
  • m1_day11
    课程内容:StringBuffer类常见的方法面向对象的高阶特征访问权限修饰符static修饰符final修饰符abstract修饰符单例模式StringBuffer类常见的方法:*append(String):往字符串里面追加连接reverse():翻转字符串insert(int,char):往指定下标处插入......
  • m1_day13
    课程内容:Object类的核心方法集合框架集合之ArrayList集合Object类的核心方法:Object是Java中的鼻祖类所有类的直接父类/间接父类toString():制定一个对象打印显示的内容任何一个引用数据类型都默认继承Object类获得toString()方法在Object类中toString()......
  • m1_day14
    课程内容ArrayList集合JCFCollectionMap[单值类型的集合]......
  • m1_day1
    课程内容:Java的优势Java的优势:跨平台*什么是平台平台指的是操作系统常见的操作系统:WindowsUnixLinuxSolaris[Sun]什么是跨平台用Java开发出来的应用程序不受底层操作系统的限制可以运行在所有的操作系统上面这是早期程序员的共同目标底层的功臣:JVM=j......
  • m1_day3
    课程内容:Java中的数据类型Java中的运算符Java中的数据类型什么是数据类型数据类型可以理解成数据的单位Java是一个强类型的编程语言所有的变量在第一次出现的时候必须有数据类型第二次出现不需要数据类型​钱:元角 分百美元日元个数:个只条栋....长......
  • m1_day4
    课程内容:Java中的运算符Java中的变量Java中的运算符:高-》低[+-*/%]+:当+遇到String类型的时候不再表示算数加法而是表示追加连接任何一个数据类型想要变成String+""intx=45;Stringy=x+"";*:当心数值超出int类型最大边界注意使用lon......