zoukankan      html  css  js  c++  java
  • Java SE第十七,八,九,二十讲 继承剖析

    1.方法重载(Overload)表示两个或是多个方法名字相同,但是方法的参数不同.方法参数不同的两层含义:

    1)参数不同.

    2)参数的类型不同.注意:方法的返回值对重载没有任何影响.一定是由参数决定的,和返回值没有关系.

    2.构造方法的重载:只要看参数即可.

    this关键字:

    public class ConstructorOverload

    {

    public ConstructorOverload()

    {

    this.(3);//this 表示第对当前对象的引用.

    System.out.println(“test”);

    }

    public ConstructorOverload(int i)

    {

    System.out.println(++i);

    }

    public static void main(String [] args)

    {

    ConstructorOverload col = new ConstructorOverload();

    }

    }

    如果想要在一个构造方法中调用另一个构造方法,可以使用this()的方式调用,this()括号中的参数表示目标构造函数的参数.this必须要放在构造函数的第一条语句的位置,之前不能有任何的可执行语句.

    3.继承(Inheritance):Java是单继承的,表示一个类只能够从另一个类中继承,(被继承 的类叫做父类也叫做基类(base classs),

    继承的类叫做子类),Java中的及继承使用extends关键字.

    Child.java代码如下:

    public class Child extends Parent

    {

    public Child()

    {

    System.out.println(“Child”);

    }

    public stratic void main(String [] agrs)

    {

    Child child = new Child;

    }

    }

    class Parent

    {

    public Parent()

    {

    System.out.println(“parent”);

    }

    }

    先执行父亲的构造函数,然后执行孩子的构造方法.

    子类和父类对象在内存中是挨着放的.

    4.当生成子类的对象时,Java默认首先调用父类的不带参数的构造方法.然后执行该构造方法,生成父类的对象,接下来再去调用子类的构造方法,生成子类对象.要想生成子类对象先要生成父类对象,没有父类对象就没有子类对象.

    5.super表示对父类对象的引用,

    6.如果子类使用super()显式调用父类的某个构造方法,那么在执行的时候就会寻找与super()所对应的构造方法而不会再去寻找父类的不带参数的构造方法.

    7.对super的调用必须是构造方法的第一条语句.和this类似.

    8.

    public class InheritenceTest

    {

    Apple apple = new Apple();

    System.out.println(apple.name);

    }

    class Fruit

    {

    String name="fruit";

    }

    class Apple extends Fruit

    {

    String name=”apple”;

    }

    关于继承的三点:

    a)父类有的,子类也有.

    b)父类没有的,子类可以增加.

    c)父类有的子类可以改变.

    9.关于继承的注意事项

    ①构造方法不能被继承.

    ②方法和属性可以被继承

    ③子类的构造方法的隐式的调用父类的不带参数的构造方法

    ④子类使用super关键字显式的调用父类的构造方法,super指的是对父类的引用.

    ⑤super关键字必须是构造方法中的第一行语句.

    10.方法的重写(Override):子类与父类的方法返回类型一样,方法名称一样,参数一样,这样我们说子类与父类的方法构成了重写关系.

    11.方法重写与方法重载之间的关系:重载发生在同一个类内部的两个或者多个方法.重写发生在父类与子类之间.重写一定是伴随着继承而发生的.重载时平行的关系,重写是一种层次关系.

    12.当两个方法形成重写关系时,可以在子类方法中通过super.run()调用父类的run()方法,其中super.run()不必放在第一行语句,因此此时父类对象应经构造完毕,先调用父类的run()方法还是先调用子类的run()方法是根据程序的逻辑决定的.

    13.在定义一个类的时候,如果没有显式的去指定该类的父类,那么该类就会继承于java.lang.Object类(JDK提供的一个类,Object类是Java中所有类的直接或间接父类).

    14.多态(polymorphism):我们说子类就是父类(玫瑰是花,男人是人),因此多态的意思就是:父类型的引用可以指向子类的对象.指向谁就调用谁的方法.

    Parent P = new  Child();当使用多态方式去调用方法的时候,首先检查父类中是否有sing()方法,如果没有则编译错误;如果有,再去调用子类的sing()方法.

    方法的重载不是多态

    多态是一种运行期的行为

    15.一共有两种类型的强制类型转换:

    ①向上的类型转换(upcast):比如说将Cat类型转换成Animal类型.即将子类型转换为父类型.对于向上类型转换,不需要显式的指定.

    Cat cat = new Cat();

    Animal animal = (Animal)cat;//可以不显式的强制类型转换.

    animal.sing();

    ②向下的类型转换(downcast)比如将Animal类型转换为Cat类型.即将父类型转换为子类型.对于向下类型转换,必须要显式指定(必须要使用

    Animal a = new Cat();

    Cat cat = (Cat)a;

    cat.sing();

    为什么使用强制类型转换:

    使用父类的引用,只能使用从父类继承来或是重写的方法,不能使用父类新增加的方法.所以...

  • 相关阅读:
    POJ 1201 Intervals 差分约束
    netframework2.0,asp.net2.0,vs.net 2005
    学习.net第一天
    VS.NET 2003 控件命名规范
    .Net生成共享程序集
    汉字的编码
    [转]用C#实现连接池
    SQL表自连接用法
    一道很好玩的OOP面试题,今天比较有空,所有做了一下
    C#编程规范(2008年4月新版)
  • 原文地址:https://www.cnblogs.com/donaldjohn/p/1966000.html
Copyright © 2011-2022 走看看