java的多态的理解_Java——多态的理解

1.多态就是父类的引用指向子类的对象

2.编译看左边,执行看右边

49714310f3ac

image.png

49714310f3ac

image.png

3.子类中定义了与父类中同名同参数的方法,在多态的情况下,运行时调用的是对应子类的该方法

49714310f3ac

image.png

4.子类和父类的互相转换

-子类转换成父类是可以自动进行的,也就是多态,注意子类赋值给父类(实际上就是多态),调用的方法还是子类的方法,调用的属性是父类的属性(详情见5的代码)

-父类转换成子类,需要用instanceof判断,然后再强制转化,此时转换以后,就是类型是子类的类型,对象也是子类的对象了

例如,

Person p = new Student();

if (p instanceof Student) {

Student s = (Student)p;

}

49714310f3ac

image.png

49714310f3ac

image.png

5.代码1

public class FieldMethodTest {

public static void main(String[] args) {

Sub s = new Sub();

System.out.println(s.count);

s.display();

Base b = s;

System.out.println(b == s);

System.out.println(b.count);

b.display();

}

}

class Base {

int count = 10;

public void display() {

System.out.println(this.count);

}

}

class Sub extends Base {

int count = 20;

public void display() {

System.out.println(this.count);

}

}

运行结果

20

20

true

10

20

6.代码2

public class FieldMethodTest {

public static void main(String[] args) {

Base s = new Sub();

s.display();//28

System.out.println(s.b);//5

//System.out.println(s.a);//报错,提示Base中没有这个属性

System.out.println(s.count);//10

}

}

class Base {

int count = 10;

int b = 5;

public void display() {

System.out.println(this.count);

}

}

class Sub extends Base {

int count = 20;

int a = 3;

public void display() {

System.out.println(this.count + a + b);

}

}

运行结果

28

5

10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值