Java基础中关于面向对象程序设计多态的各种调用与注意事项 static的方法与非static的区别

**首先关于多态的问题:
1:多态是继承父类的方法!!而不是属性 只能继承方法
**

多态的具体操作:

通过创建子类的父类对象:


package OOP;
//父类对象:
public class person {
    public person() {
    }

    public void say()
    {
        System.out.println("person sayas....");
    }
}

//子类对象
public class student extends person{
    student() {
        super();
    }
    public void say()
    {
        System.out.println("student say..");
    }
}

//在main函数中调用
public class application {
    public static void main(String[] args) {
        student s1 = new student();  //用student实例
        person s2= new student();  //创建一个person类的实例
        s1.say();
        s2.say();
    }
}

最后的结果显示:
在这里插入图片描述

可以这样理解:
子类继承于父类,那么父类的所有东西 子类都可以使用,
在这里插入图片描述
所以实际上用new student给person赋值 其所给予给person的东西可能远远大于person类所具有的 那么通过它也可以调用子类的东西,并且student类中的say函数相当于是重写了person类里面的say函数 会实现函数覆盖这就是所谓的同名隐藏规则(与C++)类似。
总结:简而言之,多态就是通过父类的对象调用子类的函数 ,只有有继承关系的两个类能如此使用!!!!若是两个毫无关系的类是不能实现内部的转换的!

static与非static的区别:

若将上述函数改为:

public class person {
   public person() {
   }

   public  static void say()   //加入static前缀
   {
       System.out.println("person sayas....");
   }
}


public class student extends person{
   student() {
       super();
   }
   public  static void say()         //也加上static
   {
       System.out.println("student say..");
   }
}

最后的结果
在这里插入图片描述

此时会发现第二行的输入不同

这是因为!!!!!!
static的特殊性!!!

在这里插入图片描述
所以若在这时写了两个相同的个方法,他会报错,只有非static才能从属于不同的类,而static是一个特殊的地方 所有的东西都放在里面,他是不允许有名字相同的两个方法出现的。

关于多态的调用,建议多写几个不同的函数创建几个不同的类来实现 会更容易理解噢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值