继承和多态

来源:互联网 发布:高考补课网络 编辑:程序博客网 时间:2024/04/28 12:01

 

继承和多态

 继承

 

 概念:当两个或两个以上的类,具有部分相同的内容(属性和方法)并且可抽象出另一个类彼此之间满足is-a关系,这种关系就是继承

 

 继承语法(关键字为extends)

 public class 父类名

 {

 

 }

 public class 子类名 extends 父类名

 {

 

 }

 

 继承规范:

 1、当两个或两个以上的类,具有部分相同的内容(属性和方法)并且可抽象出另一个类彼此之间满足is-a关系必须要用继承

 2、当相似代码出现多次,用方法代替

 

 重点:

 在继承关系中,父类更通用、子类更具体更有一版特性和行为,而子类除了具有父类的特性和行为,还具有一些自己的特殊的特征和行为。

 在子类继承父类中构造方法和私有方法不能被继承。

 java中只能单一继承

 

 

 继承的优点:

 1、代码的可重用性

 2、父类的属性和方法可用于子类

 3、设计应用程序变得更加简单

 4、可以轻松地自定义子类

 

 

 super调用构造方法

 

 调用构造方法规范:

 1、构造方法默认第一句super()

 2若父类只有一个有参构造方法则子类必须定义构造。

 3、一旦类中定义构造方法,那么JVM虚拟机不定义默认构造方法。

 4super() 调用父类构造方法时必须是子类构造方法中的第一句

 

 

super关键字的用法

super()

调用父类构造方法

super.父类中实例方法名/属性

调用父类的实例方法,调用非私有属性。

 

 

 

 举例:

 //子类用 super 关键字调用父类无参构造

 public class 父类名

 {

  public 父类名()

  {

 

  }

 }

 public class 子类名 extends 父类名

 {

  public 子类名()

  {

   super(); //super() 调用父类构造方法时必须是子类构造方法中的第一句。

  }

 }

 

 //子类用 super 关键字调用父类有参构造

 public class 父类名

 {

  public 父类名(数据类型 参数1,数据类型 参数2)

  {

 

  }

 }

 public class 子类名 extends 父类名

 {

  public 子类名(数据类型 参数1,数据类型 参数2) //若父类只有一个有参构造方法则子类必须定义构造。

  {

   super(参数1,参数2);  //super() 调用父类构造方法时必须是子类构造方法中的第一句。

  }

 }

 

 

this关键字的用法

this()

调用该类本身其他的构造方法

this.属性

调用方法非私有属性等

 

 

 

 方法重写

 

 概念:在子类中定义的一个方法,其名称、返回类型及参数类表正好与父类中某个方法名称、返回类型及参数类表相匹配,

       那么可以说,子类的方法重写了父类的方法。

 

 重写规范:

 1、存在类的层次结构(存在子类和父类中)

 2、返回类型、方法名和参数列表相同。

 3、方法体不同。

 4子类重写时,方法访问修饰权限不低于父类的权限。

 5子类重写的方法不能抛出父类不包含的异常。

 

 

 多态

 

 概念:同一个实现接口,使用不同的实例而执行不同的操作。

 

 实现步骤:

 1、子类重写父类的方法

 2把父类类型作为参数类型,该父类及其子类对象作为参数传入。

 3、运行时,根据实际创建对象类型动态决定使用哪个方法。

 4父类引用指向子类对象时注意:该引用只能调用父类自己的方法或者是子类已重写的方法。并且首先实例化父类的构造方法

 

 

 举例:

 //车类(父类)

 public class Vehicle{

  //运输方法

  public void transportation(){

   System.out.println("车能运输!")

  }

 }

 

 //公交车类(子类)

 public class Bus{

  //子类重写父类运输方法

  public void transportation(){

   System.out.println("公交车运输人!")

  }

 }

 

 //货车类(子类)

 public class Truck{

  //子类重写父类运输方法 

  public void transpotation(){

   System.out.println("货车运输货物!")

  }

 }

 

 //测试类

 public class VehicleTest{

  //把父类类型作为参数类型,该父类及其子类对象作为参数传入。

  public void transport(Vehicle vehicle){

   vehicle.transpotation();

  }

 

  //main方法

  public static void main(String[] args){

  

   //父类引用子类对象

   Vehicle bus = new Bus();

  

   //父类引用子类对象

   Vehicle truck = new Truck();

  

   //创建测试对象

   VehicleTest vehicleTest = new VehicleTest();

   //把子类对象作为参数传入

   vehicleTest.transport(bus);

   //把子类对象作为参数传入

   vehicleTest.transport(truck);

  }

 }

 

 多态的优点:

 1、不仅能减少编码的工作量,也能大大提高程序的可维护性及可扩展性。

 2、多态能改善代码结构,提高其可读性。

 3、多态是从类的角度来处理逻辑上的分离。

 4、能把多个类(派生同一个基类)当做一个类来处理。这样就能作用于不同的类型了。

 

 

 

 继承、重写和多态的优点:

 1、使用继承有效的实现代码的复用。

 2、提高了系统的可扩展性和可维护性。

 

 

 

 继承

 

 概念:当两个或两个以上的类,具有部分相同的内容(属性和方法)并且可抽象出另一个类彼此之间满足is-a关系,这种关系就是继承

 

 继承语法(关键字为extends)

 public class 父类名

 {

 

 }

 public class 子类名 extends 父类名

 {

 

 }

 

 继承规范:

 1、当两个或两个以上的类,具有部分相同的内容(属性和方法)并且可抽象出另一个类彼此之间满足is-a关系必须要用继承

 2、当相似代码出现多次,用方法代替

 

 重点:

 在继承关系中,父类更通用、子类更具体更有一版特性和行为,而子类除了具有父类的特性和行为,还具有一些自己的特殊的特征和行为。

 在子类继承父类中构造方法和私有方法不能被继承。

 java中只能单一继承

 

 

 继承的优点:

 1、代码的可重用性

 2、父类的属性和方法可用于子类

 3、设计应用程序变得更加简单

 4、可以轻松地自定义子类

 

 

 super调用构造方法

 

 调用构造方法规范:

 1、构造方法默认第一句super()

 2若父类只有一个有参构造方法则子类必须定义构造。

 3、一旦类中定义构造方法,那么JVM虚拟机不定义默认构造方法。

 4super() 调用父类构造方法时必须是子类构造方法中的第一句

 

 

super关键字的用法

super()

调用父类构造方法

super.父类中实例方法名/属性

调用父类的实例方法,调用非私有属性。

 

 

 

 举例:

 //子类用 super 关键字调用父类无参构造

 public class 父类名

 {

  public 父类名()

  {

 

  }

 }

 public class 子类名 extends 父类名

 {

  public 子类名()

  {

   super(); //super() 调用父类构造方法时必须是子类构造方法中的第一句。

  }

 }

 

 //子类用 super 关键字调用父类有参构造

 public class 父类名

 {

  public 父类名(数据类型 参数1,数据类型 参数2)

  {

 

  }

 }

 public class 子类名 extends 父类名

 {

  public 子类名(数据类型 参数1,数据类型 参数2) //若父类只有一个有参构造方法则子类必须定义构造。

  {

   super(参数1,参数2);  //super() 调用父类构造方法时必须是子类构造方法中的第一句。

  }

 }

 

 

this关键字的用法

this()

调用该类本身其他的构造方法

this.属性

调用方法非私有属性等

 

 

 

 方法重写

 

 概念:在子类中定义的一个方法,其名称、返回类型及参数类表正好与父类中某个方法名称、返回类型及参数类表相匹配,

       那么可以说,子类的方法重写了父类的方法。

 

 重写规范:

 1、存在类的层次结构(存在子类和父类中)

 2、返回类型、方法名和参数列表相同。

 3、方法体不同。

 4子类重写时,方法访问修饰权限不低于父类的权限。

 5子类重写的方法不能抛出父类不包含的异常。

 

 

 多态

 

 概念:同一个实现接口,使用不同的实例而执行不同的操作。

 

 实现步骤:

 1、子类重写父类的方法

 2把父类类型作为参数类型,该父类及其子类对象作为参数传入。

 3、运行时,根据实际创建对象类型动态决定使用哪个方法。

 4父类引用指向子类对象时注意:该引用只能调用父类自己的方法或者是子类已重写的方法。并且首先实例化父类的构造方法

 

 

 举例:

 //车类(父类)

 public class Vehicle{

  //运输方法

  public void transportation(){

   System.out.println("车能运输!")

  }

 }

 

 //公交车类(子类)

 public class Bus{

  //子类重写父类运输方法

  public void transportation(){

   System.out.println("公交车运输人!")

  }

 }

 

 //货车类(子类)

 public class Truck{

  //子类重写父类运输方法 

  public void transpotation(){

   System.out.println("货车运输货物!")

  }

 }

 

 //测试类

 public class VehicleTest{

  //把父类类型作为参数类型,该父类及其子类对象作为参数传入。

  public void transport(Vehicle vehicle){

   vehicle.transpotation();

  }

 

  //main方法

  public static void main(String[] args){

  

   //父类引用子类对象

   Vehicle bus = new Bus();

  

   //父类引用子类对象

   Vehicle truck = new Truck();

  

   //创建测试对象

   VehicleTest vehicleTest = new VehicleTest();

   //把子类对象作为参数传入

   vehicleTest.transport(bus);

   //把子类对象作为参数传入

   vehicleTest.transport(truck);

  }

 }

 

 多态的优点:

 1、不仅能减少编码的工作量,也能大大提高程序的可维护性及可扩展性。

 2、多态能改善代码结构,提高其可读性。

 3、多态是从类的角度来处理逻辑上的分离。

 4、能把多个类(派生同一个基类)当做一个类来处理。这样就能作用于不同的类型了。

 

 

 

 继承、重写和多态的优点:

 1、使用继承有效的实现代码的复用。

 2、提高了系统的可扩展性和可维护性。

 

 

原创粉丝点击