多态

作者: 闫子扬 | 来源:发表于2017-05-03 20:13 被阅读0次

###多态

*编译器多态  -  方法重载 方法名称相同方法参数不同。

*运行时多态 - 在程序运行时判断到底是那个类(父类还是子类),进而确定要调用的是父类方法还是子类方法。

*所谓多态就是子类对象和父类对象相互转化的关系

*1.向上转型  父类 父类对象 = new 子类对象()  Animal a1 = new Cat("小喵");

*2.向下转型  子类 子类对象 = (父类)对象;  //强转

####多态的好处 : 把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。

###多态实现的关键

*1.要有继承关系

*2.要有方法重写

*3.父类引用指向子类对象

* 1.编写方法时使用父类做形参  public void feed(Animal animal)

* 2.将子类对象作为实参传递给改方法

Animal a1 = new Cat("小喵");

student.feed(a1);

* 3.运行时根据实参类型

*里氏替换原则:所有出现父类对象的地方都可以用子类替换

###匿名类对象

*xiaoxin.feed(new Cat("小白"))//因为该cat1对象只在程序代码中使用1次,以后不会再次引用操作它,所有我们使用匿名对象。就使用一次,使用后立即释放。

*过去写

* Cat1 cat1 = new Cat1("小白");

* xiaoxin.feed(cat1);

###抽象类

*用abstract关键字修饰的类  叫抽象类。不希望被实例化(new)类,一般可创建为抽象类

###抽象方法

*使用abstract 关键字修饰的方法,只有方法的声明,不包含方法的实现

public abstract void eat();

*含有抽象方法的类一定是抽象类

*抽象类是不能实例化的只能被继承。抽象类的子类必须重写父类的抽象方法

@Override

public void eat() {

System.out.println("我是一只可爱的小猫,我叫"+this.name+",我正在吃鱼");

}

*若未重写相关抽象方法。则子类也是抽象类

*构造函数,static,final,private。(不要加抽象关键字abstract)

定义类时 可以使用的修饰符是 public final abstract 或者不写

###静态(类)方法和静态成员变量

*在方法声明中加入关键字static 表示无需创建类对象即可调用的方法:

* 1.类对象根本不存在。列如你要创建类对象

* 2.不需要关联任何类对象的时候。例如:Math 类中的相关算数方法

static string name;

public static void sayHi()

*仅能调用其他的静态方法,只能访问静态数据,不能引用this和super

*静态成员变量和静态方法都是使用   类名.属性名 类名.方法名 去调用。

Cat.name = "小喵";

Cat.sayHi();

*静态的变量本质上变为全局变量,就是声明一个对象不会产生多个静态变量的拷贝,只会分配一块内存空间,共享同一个变量

###super的作用

*1.直接引用。类似于this。相当于指向当前对象的父类

* super.age

*2.子类成员与父类成员同名

* super.sayHi();

*3.引用构造函数

* super();

###final

*final 修饰类:不允许被继承     final 和 abstract冲突 不要同时加

*final 修饰的方法:不允许被子类重写  override

*final 修饰的成员变量:成员变量使常量,只能被赋值一次。赋值后无法改变

相关文章

  • 1.9 多态基本概念

    本小节知识点: 【了解】什么是多态? 【掌握】多态的条件 【了解】多态的优点 1.什么是多态? 什么是多态:多态就...

  • C++ 的多态(Polymorphism), virtual f

    多态 c++支持两种多态,编译时多态和运行时多态但其实编译时多态根本不是真正的多态,编译时多态就是函数的重载,ov...

  • 详解Java多态

    详解Java多态 多态定义 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态...

  • 多态

    1.多态 1.多态 1.1 要点 多态是方法的多态,不是属性的多态 多态的存在有三个必要条件:继承;方法重写;父类...

  • java多态面试题

    java多态性 多态分两种: (1) 编译时多态(设计时多态):方法重载。 (2) 运行时多态:JAVA运...

  • Java_basic_10: 多态polymorphism

    多态polymorphism 多态是指对象的多种形态 主要可以分为引用多态和方法多态 继承是多态的实现基础 引用多...

  • 六、多态与虚函数

    多态的基本概念 多态 多态分为编译时多态和运行时多态。 编译时多态主要是指函数的重载(包括运算符的重载)。对重载函...

  • Java基础之面向对象

    1.多态,继承,封装 Java实现多态有哪些必要条件?具体怎么实现?多态的实现原理?多态的作用? 答:多态的优点 ...

  • java多态面试题

    java多态性 多态分两种: (1) 编译时多态(设计时多态):方法重载。 (2) 运行时多态:JAVA运行时...

  • 多态与虚函数

    多态的基本概念 实现了多态机制的程序,可以使用同一个名字完成不同的功能。 多态分为编译时多态和运行时多态。 多态 ...

网友评论

      本文标题:多态

      本文链接:https://www.haomeiwen.com/subject/qtyltxtx.html