通过静态方法(被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(){
}
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);
}
}