多态:

它指的是同一操作作用于不同的对象时,可以有不同的表现形式或行为。

  1. 方法重载(Overloading)(静态多态):同一个方法名,但参数不同。
  2. 方法重写(Overriding)(动态多态):子类重写父类的方法,使得子类对象可以有不同的行为。

多态的优势

  • 灵活性:通过父类引用指向子类对象,可以实现统一的接口调用,让代码更具有扩展性和灵活性。
  • 可维护性:多态允许我们在程序运行时根据需要改变行为,使得程序更加简洁、易于维护。
  • 代码复用性:可以通过继承和方法重写来避免重复代码。

向上转型:


父类的引用指向子类的对象,父类的引用可调用子类重写父类的方法和父类的属性
向下转型基于向上转型
是将父类的引用转化为子类类型,目的是调用子类所有的属性和方法
对象不能强转
this.size
二义性:参数的名称和当前对象属性名称重复导致的

抽象类:

存在原因:可以作为多态参数或返回类型,或者建立一个多态数组

抽象类不可以被实例化,可以有静态成员,基本没有用处,除非有其他类扩展它

如果声明了一个抽象方法,那么这个类就是抽象类

抽象方法的意义在于:即使没有放入任何具体的方法代码,还是可以为一组子类型定义部分协议

抽象方法,抽象类可以很方便的实现多态,使用一个有抽象方法的超类,那么在其写子类时,就不必重写那些与超类不同的新方法,所有子类都可以扩展同一个抽象方法

接口中的方法全部都是抽象方法(public abstract 可加可不加)

public interface Dog{
     void Scream();
    public abstract String Clothes();
  }

抽象类与抽象方法的使用

抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象类
如果子类没有实现父类的所有抽象方法,子类必须被定义为抽象类
没有抽象构造方法,也没有抽象静态方法
抽象类中可以有非抽象的构造方法,创建子类的实例时可能调用

接口的使用:

接口中的成员变量默认都是 public static final ,必须显式初始化
接口中的方法默认都是 public abstract 
接口没有构造方法,不能被实例化
一个接口不能实现另一个接口,但可以继承多个其他接口
一个类必须实现接口抽象方法( implements ),除非这个类也是抽象类

抽象类和接口:

相同点

代表系统的抽象层
都不能被实例化
都能包含抽象方法
用于描述系统提供的服务,不必提供具体实现


不同点

在抽象类中可以为部分方法提供默认实现,而接口中只能包含抽象方法
抽象类便于复用,接口便于代码维护
一个类只能继承一个直接的父类,但可以实现多个接口

使用原则


接口做系统与外界交互的窗口
接口提供服务
接口本身一旦制定,就不允许随意修改
抽象类可完成部分功能实现,还有部分功能可作为系统的扩展点

超类——Object

所有类的超类,如果没有显式的扩展一个类,所有这样的类都隐式的扩展了Object类

特点:

  1. 所有类的父类
  2. 提供了一些基本的方法

 

posted on 2025-02-09 23:05  fafrkvit  阅读(34)  评论(0)    收藏  举报