Java基础回顾——方法

这是我第一次写博客,进入Android这个大坑已经有一段时间了,在学习Java过程中,把学习记录下来的笔记进行一个总结,觉得以博客的形式进行输出,从而更加巩固自己对知识的掌握程度。


方法主要区别在三个方面:修饰符、返回值、命名

方法中的参数分为: - 实际参数: 实际参与运算的 - 形式参数:方法定义上的,接受实际参数的

方法大概分为一下九种:

  1. 一般方法
  2. 构造方法
  3. 无返回值的方法。
  4. 无参有返回值的方法。
  5. 有参无返回值的方法。
  6. 有参有返回值的方法。
  7. 静态方法。
  8. 非静态方法。
  9. 抽象方法。

其中还有

  1. 方法的重载
  2. 方法的重写
  3. 方法的调用

其中用到的修饰符

方法如下

int a = 1;
//一般方法
public Sample() { 
    System.out.println(a); 
} 

public void Sample() { // 无返回值的方法,void就是空的意思
    System.out.println(a); 
}  

public int Sample() { //无参有返回值的方法
    System.out.println(a); 
    return a; 
}  
public void Sample(int a) { // 有参无返回值的方法
    System.out.println(a); 
} 

public int Sample(int a) { // 有参有返回值的方法
    System.out.println(a); 
    return a;
}
public static void Sample() { // 静态方法。
    System.out.println(a); 
}  
public void Sample() { // 非静态方法。
    System.out.println(a); 
}  
public void Sample() { // 非静态方法。
    System.out.println(a); 
}  

public abstract void Sample() { // 抽象方法,abstract不能与private、static、final、native并列修饰同一个方法。
    System.out.println(a); 
}  

方法的重载

重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。

每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

最常用的地方就是构造器的重载。

public class Overloading {
 public int test(){
    System.out.println("test1");
    return 1;
}

 public void test(int a){
    System.out.println("test2");
}   

//以下两个参数类型顺序不同
    public String test(int a,String s){
     System.out.println("test3");
     return "returntest3";
}   

    public String test(String s,int a){
     System.out.println("test4");
        return "returntest4";
}   

    public static void main(String[] args){
     Overloading o = new Overloading();
        System.out.println(o.test());
        o.test(1);
        System.out.println(o.test(1,"test3"));
        System.out.println(o.test("test4",1));
    }
}

方法的重写

参数列表必须完全与被重写方法的相同; 返回类型必须完全与被重写方法的返回类型相同; 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。 父类的成员方法只能被它的子类重写。 声明为final的方法不能被重写。 声明为static的方法不能被重写,但是能够被再次声明。 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。 子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法。 重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。 构造方法不能被重写。 如果不能继承一个方法,则不能重写这个方法。

当需要在子类中调用父类的被重写方法时,要使用super关键字。代码如下:

class Animal{
   public void move(){
  System.out.println("动物可以移动");
   }
}

class Dog extends Animal{
   public void move(){
  super.move(); // 应用super类的方法
  System.out.println("狗可以跑和走");
   }
}

public class TestDog{
   public static void main(String args[]){

  Animal b = new Dog(); // Dog 对象
  b.move(); //执行 Dog类的方法

   }
}

运行结果:

动物可以移动

狗可以跑和走

下面图片区分重写(Overriding)和重载(Overloading)的区别

方法的调用

public class InvokeMethod{ 
    public static void main (String[] args){ 
        InvokeMethod.t2(); 
} 
    public static void t2(){ 
        System.out.println("static t2....");
    } 
}

感谢浏览到最后,努力的小人儿运气不会差。

猜你喜欢

转载自blog.csdn.net/weixin_37812606/article/details/80155067