SpringBoot中调用方法的几种形式

94 阅读1分钟

通过静态方法(被static修饰的方法或者变量属于当前类)

  • static修饰的方法
  public class Dog {
      
     public static String  getName(){
         System.out.print("this is Dog class ...")
         return "i am dog";
     } 
   }
    public class Cat {
        public String CatSex(){
        System.out.print("Use Dog static void "+Dog.getName());
            return "i am Cat"
        }
    }

通过super关键字/重写(final 修饰的类不可继承,final修饰的方法不可重写,final修饰的变量不可更改)

  • 需要继承
    public class Dog{
        public String getName(){
           return "i am dog"
        }
    }
   public class Cat extends Dog{
       
       // 通过重写
       @Overried
       public String getName(){
       
       }  
       
       //通过super
       public void getSex(){
           super.getName()
       }
   }

通过Autowire

@Component
public class Dog {

    public String getName(){
        return " i am dog";
    }
}
@Component
public class Cat{
   
   @Autowire
   private Dog dog;
   
   public String getSex(){
       dog.getName();
       return "i am sex";
   }
   
}

通过构造器(final作用于当前类,final会优化方法在JVM中的使用,final修饰常量会存在常量池)

    public class Dog {
        
        public String getName(){
            return "i am dog";
        }
    }
 public class Cat {
    
    public final Dog dog;
    
    public Cat(Dog dog){
        this.dog=dog;
    }
    
    public void getSex(){
        dog.getName();
    }
 }

通过new关键字(初始化,内存分配)

public class Dog{
    
    public String getName(){
        System.out.print("Dog Function ...");
        return "i am dog"
    }

}
public class Cat{
    
    public void getSex(){
        Dog dog=new Dog();
        dog.getName()
    }

}

通过反射(需要对反射的Api进行try/catch或者throws)

   public class Dog{
       
       public String getName(){
           System.out.print("Dog function");
           return "i am dog";
       }
   }
   public class Cat{
       public void getSex(){
           Class aClass=Class.forName("Dog");
           Method method=aClass.getMethod("getName",null);
           Object obj=aClass.newInstance();
           method.invoke(obj);
       }
   }