Java 为什么我们只能访问类方法。为什么重写方法不能更严格?

Java 为什么我们只能访问类方法。为什么重写方法不能更严格?,java,oop,Java,Oop,a被定义为a型,因此a.m1使用a中的方法m1 您可以用B扩展A,然后代码将从B调用m1。B是A,因此您可以将A B传递给doSomethingToAA A这样的方法。该方法正确地期望能够看到m1和m2 您只能访问A方法,因为A的类型是A-它可以是A而不是B,因此您只能调用variables类公开的方法。您可以将main更改为B a=新的B;现在可以调用B方法 当您扩展类或实现接口时,可以进行重写。 i、 例如,当我们谈论接口和继承时,重写是适用的。 在代码中,您正在重新定义未重写的方法 只有继

a被定义为a型,因此a.m1使用a中的方法m1

您可以用B扩展A,然后代码将从B调用m1。

B是A,因此您可以将A B传递给doSomethingToAA A这样的方法。该方法正确地期望能够看到m1和m2


您只能访问A方法,因为A的类型是A-它可以是A而不是B,因此您只能调用variables类公开的方法。您可以将main更改为B a=新的B;现在可以调用B方法

当您扩展类或实现接口时,可以进行重写。 i、 例如,当我们谈论接口和继承时,重写是适用的。 在代码中,您正在重新定义未重写的方法

只有继承的方法可以被重写,请记住private
方法不是继承的。

A没有字段,通常认为允许访问类字段的设计很差。你可以通过使类最终或方法最终来限制扩展…这个问题似乎离题了,因为它显然是一个作业副本粘贴,OP没有任何努力。B类扩展了a类吗??
class A{
    public void m1(){}
    public void m2(){}
}

class B{
    public void m3(){}
    public void m1(){}

    public static void main(String args[]){
        A a=new B();
        a.m1();

        //Why we have access to A class methods only.
        // Why overriding methods cannot be more restrictive 
    }
}