java中继承和多态

   转自原文http://blog.csdn.net/xinxin19881112/article/details/2944760 若冒犯博主,请勿见怪!java

一、  什么是继承,继承的特色?this

子类继承父类的特征和行为,使得子类具备父类的各类属性和方法。或子类从父类继承方法,使得子类具备父类相同的行为。编码

特色:在继承关系中,父类更通用、子类更具体。父类具备更通常的特征和行为,而子类除了具备父类的特征和行为,还具备一些本身特殊的特征和行为。spa

在继承关系中。父类和子类须要知足is-a的关系。子类是父类。.net

表示父类和子类的术语:父类和子类、超类和子类、基类和派生类,他们表示的是同一个意思。对象

二、  为何须要继承?何时应该继承?blog

使用继承能够有效实现代码复用,避免重复代码的出现。继承

当两个类具备相同的特征(属性)和行为(方法)时,能够将相同的部分抽取出来放到一个类中做为父类,其它两个类继承这个父类。接口

继承实现了面向对象的原则:write once,only once(编写一次、且编写一次get

三、  如何实现继承?

Java语言中,用extends(扩展)关键字来表示一个类继承了另外一个类。

在父类中只定义一些通用的属性和方法。

子类自动继承父类的属性和方法,子类中能够定义特定的属性和方法。或子类从新定义父类的属性、重写父类的方法能够得到与父类不一样的功能。

四、  什么是方法重写?

若是在子类中定义的一个方法,其名称、返回类型及参数列表正好与父类中某个方法的名称、返回类型及参数列表相匹配,那么能够说,子类的方法重写了父类的方法。

方法重写在不一样类,是实现多态的必要条件。

五、  super关键字的用法和位置,super关键字调用父类的构造方法,super关键字调用父类的方法?

在子类的构造方法中,经过super关键字调用父类的构造方法。

若是子类中重写了父类的方法,能够经过super关键字调用父类的方法。

父类:

private String name;

private String sex;

public xinxin1(String name,String sex)

{

           this.name=name;

           this.sex=sex;

}

         public void hello(){

                   System.out.println(“嗨!我是”+name+”我是”+sex+”孩”);

         }

子类:

public xinxin2(String name,String sex)

{

           //调用父类的构造方法

           super(name,sex);

}

public void hello(){

                   System.out.println(“我是新来的!”);

           //调用父类的方法

           super.hello();

}

位置注意:调用父类的构造方法的语句(super语句)必须是构造方法中的第一条语句。

由于建立对象的时候,须要先建立父类对象,再建立子类对象。

注意:建立对象时,先建立父类对象,在建立子类对象。若是没有显示调用父类的构造方法,将自动调用父类的无参构造方法。

六、  一切类的老大(祖先)Object。

全部类都直接或者间接地继承了java.lang.Object类,Object类中定义了全部的java对象都具备的相同行为,是全部类的祖先。

一个类若是没有使用extends关键字,那么这个类直接继承自Object类。

七、  什么是多态?

多态的特征是表现出多种形态,具备多种实现方式。或者多态是具备表现多种形态的能力的特征。或者同一个实现接口,使用不一样的实例而执行不一样的操做。

八、  为何须要使用多态?多态的好处?

能够加强程序的可扩展性及可维护性,使代码更加简洁。

不但能减小编码的工做量,也能大大提升程序的可维护性及可扩展性。

九、  如何实现多态?

通常作法是:写一个方法,它只接收父类做为参数,编写的代码只与父类打交道。调用这个方法时,实例化不一样的子类对象(new 一个对象)。

更具体的说:

(1)、子类重写父类的方法。使子类具备不一样的方法实现。

(2)、把父类类型做为参数类型,该父类及其子类对象做为参数转入。

(3)、运行时,根据实际建立的对象类型动态决定使用那个方法。

在运行时,java虚拟机会根据实际建立的对象类型决定使用那个方法。通常将这称为动态绑定。   

十、多态小结:多态与继承、方法重写密切相关,咱们在方法中接收父类类型做为参数,在方法实现中调用父类类型的各类方法。当把子类做为参数传递给这个方法时,java虚拟机会根据实际建立的对象类型,调用子类中相应的方法(存在方法重写时)。

相关文章
相关标签/搜索