1 如果静态方法调用普通方法的时候,只能重新创建一个对象,而不能直接调用;静态成员不能直接访问非静态成员;
比如说:
public class Test
{
pubic void info()
{
System.out.println("我是一个简单的方法!");
}
//主函数是静态函数
public static void main(String[] args)
{
//错误的调用方法
info();
//正确的调用方法
new Test().info();
}
}
//所有的静态方法访问另一个普通方法的话 都要创建一个对象
2 this关键字的引用
java提供了一个this关键字,this关键字是一个对象的默认引用,它总是指向调用该方法的对象,this作为默认的引用有两种情形:
a 构造器中引用该构造器执行初始化的对象;
b 在方法中引用调用该方法的对象;
注意:static 修饰的方法不能使用this引用;
在构造器中使用this引用时,this总是引用该构造器正在初始化的对象;
和普通方法类似,在构造器中访问其他属性和方法时,大部分情况可以省略this ; 但是,构造器中有一个与属性同名的局部变量,又必须在构造器中访问这个被覆盖的属性,则必须使用this前缀。
3 抽象类的运用
为什么要使用抽象类呢?因为某些父类只知道子类包含什么样的方法,却不知道怎样实现这些方法。这种情况下,就要用到抽象类了。抽象方法和抽象类的规则如下:
a 抽象类和抽象方法必须使用abstract修饰符来修饰,且抽象方法不能有方法体;
b 抽象类不能被实例化,无法使用new关键字调用抽象类的构造器来创建实例,抽象方法必须包含在抽象类里边,但是抽象类里边可以没有抽象方法;
c 抽象类里可以包含属性,方法(抽象方法或是普通方法),初始化块,构造器,内部类,枚举类,抽象类的构造器不能用来创建实例,只能被子类调用;
注意:定义抽象方法,只需在普通方法上增加abstract修饰符,然后去掉方法体和大括号,然后在小括号后边加上分号就可以了;定义抽象类,只需在普通类上增加abstract就可以了。
优势:利用抽象类和抽象法,我们可以更好地发挥多态的优势,继而让程序更加灵活!