多态介绍和多态的特点
作者:互联网
多态介绍
定义: 多态是指不同类的对象在调用同一个方法是所呈现出多种不同行为。
同一个引用类型,使用不同的实例而执行不同的操作,即父类引用指向子类对象
使用条件:
(1)要有继承或者实现的关系
(2)要有方法重写
(3)要有父类引用指向子类对象
语法格式:
父类类名 引用名称 = new 子类类名();
class CutMain{ public void cut(){ System.out.println("。。。"); } } class Barber extends CutMain{ @Override public void cut(){ System.out.println("理发师:理发"); } } class Docter extends CutMain{ @Override public void cut(){ System.out.println("医生:动手术"); } }
public static void main(String[] args) { CutMain barber = new Barber(); CutMain docter = new Docter(); barber.cut(); docter.cut(); }
运行结果:
多态的特点
在多态(父类引用指向子类的实现)的情况下,我们访问引用相关的成员(成员变量,成员方法,构造方法,静态方法)时的情况
成员变量
class CutMain{ int i = 10; public void cut(){ System.out.println("。。。"); } } class Barber extends CutMain{ int i = 100; @Override public void cut(){ System.out.println("理发师:理发"); } } class Docter extends CutMain{ int i = 1000; @Override public void cut(){ System.out.println("医生:动手术"); } }
public static void main(String[] args) { CutMain barber = new Barber(); CutMain docter = new Docter(); barber.cut(); docter.cut(); System.out.println(barber.i); System.out.println(docter.i); }
运行结果:
在多态中,成员变量不存在覆盖的情况,在访问的时候直接访问父类中的属性
成员方法
多态介绍案例;
在多态汇总,因为方法存在重写(覆盖),所以在访问的时候执行的是子类中重写的方法
构造方法
class CutMain{ int i = 10; public void cut(){ System.out.println("。。。"); } public CutMain() { System.out.println("父类构造方法"); } } class Barber extends CutMain{ int i = 100; @Override public void cut(){ System.out.println("理发师:理发"); } public Barber() { System.out.println("Barber子类的构造方法"); } } class Docter extends CutMain{ int i = 1000; @Override public void cut(){ System.out.println("医生:动手术"); } public Docter() { System.out.println("Docter子类的构造方法"); } }
public static void main(String[] args) { CutMain barber = new Barber(); CutMain docter = new Docter(); barber.cut(); docter.cut(); System.out.println(barber.i); System.out.println(docter.i); }
运行结果:
在创建类类对象时会先执行构造方法,在执行子类的构造方法时会先执行父类的构造方法
先执行父类的构造方法,可以帮助我们初始化父类的成员变量,然后在执行子类的构造方法中其他的代码来实现子类成员变量的初始化。
静态方法
class CutMain{ int i = 10; public void cut(){ System.out.println("。。。"); } public CutMain() { System.out.println("父类构造方法"); } public static void eat(){ System.out.println("父类吃"); } } class Barber extends CutMain{ int i = 100; @Override public void cut(){ System.out.println("理发师:理发"); } public Barber() { System.out.println("Barber子类的构造方法"); } public static void eat(){ System.out.println("Barber类吃"); } } class Docter extends CutMain{ int i = 1000; @Override public void cut(){ System.out.println("医生:动手术"); } public Docter() { System.out.println("Docter子类的构造方法"); } public static void eat(){ System.out.println("Docter类吃"); } }
public static void main(String[] args) { CutMain barber = new Barber(); CutMain docter = new Docter(); barber.cut(); docter.cut(); System.out.println(barber.i); System.out.println(docter.i); barber.eat(); }
运行结果:
在多态中,不会继承静态方法,因为静态方法是属于类的。所以在多态中我们调用静态方法那么执行的也是父类中的静态方法
标签:cut,多态,介绍,System,特点,CutMain,println,public,out 来源: https://www.cnblogs.com/xjw12345/p/16388247.html