2015年3月10日学习心得

来源:互联网 发布:python 输出双引号 编辑:程序博客网 时间:2024/05/07 22:39

        昨天在看Java中的面向对象与内存解析时,有稍许的不理解,故晚上回去又仔细的揣摩了一下。

        就以这个方法调用为例:

      public class TestMethod  {

 
      public static void main(String[] args)  {
          m4 (4,6);
          int  i = m4 (4,6);
          System.out.println (i);
    
      }

          public  static int  m4(int i,int j)  {
          return i > j ? i : j;
         }
      }

两种方法定义

   第一种:将4传给i,6传给j,这样调用,值返回存放在一个临时区域,因为没用返回值,所以返回的值就消失了。

   第二种:方法执行完了,将执行的结果返回给所定义的i。用了返回值,方法返回什么值,就返回什么类型。

   以上仅属于个人的理解,有什么错无还望大家指出。

   另外学习到的一点就是:

   重写(覆盖)父类的方法

   重写只能存在于子类和父类之间

  l 重写的原则:(两同两小一大 他人总结

     两同:方法名相同、参数列表相同

     两小:子类方法返回值类型比父类返回值类型更小或相等。

           子类方法声明抛出的异常类应比父类方法抛出的异常类更小或相等。

     一大:子类方法的访问权限应比父类方法的访问权限更大或相等。

  l 子类覆盖方法不能比父类覆盖方法抛出更多的异常

 覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法。

ErrorEG:

   class Fruit{

     public static void test(){

     }

  }

    class Apple extends Fruit{

     public void test(){

     }

   }

子类不能继承父类的静态方法

父类方法如果具有private访问权限,则这个方法对其子类就隐藏隐藏,子类也无法覆盖父类的方法,如果子类中   定义了一个与父类private修饰的方法具有相同的方法名、相同的形参列表、相同的返回值类型的方法,则这不是重写,而是在子类中重新定义了一个新的方法。下面有一个简例说明:

RightEG:

   class Vehicle{

    //test方法是private的,子类是不能覆盖该方法

   private void drive(){

    }

  }


   class Car extends Vehicle{

     //此处不是方法的重写,所以可以增加static关键字

   public static void drive (){

      }

}

以上就先写到这里





0 0
原创粉丝点击