三重大山-重载 重写 重绘_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 三重大山-重载 重写 重绘

三重大山-重载 重写 重绘

 2014/5/22 1:09:41  开心的棒棒兵  程序员俱乐部  我要评论(0)
  • 摘要:总结我们以前所学的东西,我们会发现有很多困扰我们的东西,今天我就要先解决三座大山的压迫:重载重写重绘重载:重载我在之前曾经有讲到过,重载分为构造方法①的重载和普通方法的重载。方法的重载主要的不同就是传参的不同:例如构造方法:publicStudent(intscore){}publicStudent(Stringname){}publicStudent(inti,intj,Stringname){}不同的地方就是参数的不同,而这里边我们要特别注意的是,什么情况算是参数不同
  • 标签:重载 重绘
总结我们以前所学的东西,我们会发现有很多困扰我们的东西,今天我就要先解决三座大山的压迫:重载    重写     重绘

重载:重载我在之前曾经有讲到过,重载分为构造方法①的重载和普通方法的重载。方法的重载主要的不同就是传参的不同:例如
    
     构造方法:
  
           public Student(int score){}
           public Student(String name){}
           public Student(int i,int j,String name){}

           不同的地方就是参数的不同,而这里边我们要特别注意的是,什么情况算是参数不同?
         ⑴ 数据类型不同
                public Student(int score){}
                public Student(String name){}  
         ⑵顺序不同
                 public Student(int score,String name){}
                 public Student(String name,int score){}
         ⑶个数不同
                 public Student(String name){}
                 public Student(int i,int j,String name){}

         方法的重载是十分重要的,对于我来说,尤其是构造方法的重载。就目前我接触的而言,我们经常会用构造方法来传参,传递的参数不一定都是一致的。所以,构造方法的重载对于我来说就应该十分重要了。
         ① 在这里举个例子,我们最近在做五子棋,之前的画板也是,我们都用到了画笔。二画笔我们是从画布上取得的,但是我们真正用到的地方确实要在监听器里边,那么我们怎么来把画笔传过去呢?

         JPanel jp=new JPanel()
         Graphics g=jp.getGraphics();
         ChessListener l=new ChessListener(g);//这些都是在在主函数类里面的


         //而在监听类里边里
         public ChessListener(Graphics g){
            this.g=g;//这样画笔就传过来了!!!
         }



         这也是构造方法的一个重要作用,那么,构造方法在实例化对象时,又有什么作用呢?
        
         初始化的作用!!!
         Student stu=new Student("张三");
         这时候初始化的名字就是张三了。
         我们为什么要初始化呢?

         每个类里边都有一个默认的无参的构造方法






重写:什么是重写,重写就是方法名相同,参数个数相同,参数类型相同,顺序相同,唯一不同的就是方法体。我在前边详细的讲解了什么是方法的重写,这里就不做介绍,其实最主要的是用处。方法的重写主要是子类继承父类的时候 ,可能会重写父类的构造方法,重写方法的访问修饰符可以大于或者等于父类方法的访问修饰符。

      这里我们就要讲讲父类和子类方法的使用了。

      //父类
     
      public class Student{
         public void Study(){
             System.out.println("我在上政治")
         }
      }


      //子类

      public class UNStudent{

        public static void main(String [] args){
         
            Student stu=new UNStudent();//自动转型
            stu.Study();//调用学习方法时,会先调用子类里边的方法,因为你在子类里重写了
                        //不要觉得这是多此一举哦,这是很有意义的,比如我们在画图板重绘②的                         //时候!!!!,但是还要注意一点就是,如果这样⑤⑥⑦



           stu.play();⑤//这是否可以呢?答案是不可以,因为父类里没有这个方法,你是调用不到的,stu是Student对象,不是UNStudent对象,除非你强制转型,即:
           UNStudent stu1=(UNStudent)stu;
           stu1.play();

        }

          public void Study(){
             System.out.println("我在上政治")
          }

          public void  play(){
             System.out.println("我在玩")
          }

      }



     public void paint(Graphics g){③
    super.paint(g);④
for(int i=0;i<DrawPaneListener.getSize();i++){

        Shapes shapes=DrawPaneListener.array[i];

shapes.draw((Graphics2D)g);②//看到这里了没有,正//是因为父类可以去调用子类里边的方法,所以我们只需要写着一个语句,如若不然,我们岂不是要//画一个,写一个
                }
}





重绘:什么是重绘,重绘就是当你画完一样东西时,因为拖动,变换大小等因素,会导致画布上的东西消失,这时我们就要把我们画过的东西再重新画一遍,这就是重绘。

重绘的时候有很重要的东西需要谨记,那就是,方法名,参数类型参数名必须一致。不然就不是重绘。③与下面的代码对比:

       public void paint(Graphics2D g){}
       这就不是方法的重绘了,而是重载。所以,重绘其实就是paint方法的重写(?)
       其实还有一点,就是当我们重绘时,如果绘方法原来并不是我们自己写的,那么我们最好继承一下父类的重绘方法,不然我们可能会在重写时缺少对本来元素的掌握,就比如我们上述的重绘方法④,如果我们没有这句,那么在重绘时,画布就会发生变化!!
发表评论
用户名: 匿名