java中修饰方法:abstract和final只能用一个去修饰方法,因为abstract表示抽象,是需要被继承实现的,说明是需要修改里面内容的,而final表示不能改变的,所以他不能和abstract一块修饰方法,否则就矛盾了。
static修饰的静态成员不能修饰非静态成员。
java中的引用实际上就是C中的指针,只是java不允许直接访问堆内存里面的对象,只能通过对象的引用来访问。如果堆内存中的对象没有任何引用指向它,那么程序也就无法访问到这个对象,那么这个对象就会变成垃圾,java的垃圾回收机制便会把它回收。
this引用:代表一个默认对象的引用。关于this的使用,用代码来说明:
package com;
public class Dog {
public void Jump()
{
System.out.println("跑步");
}
public void run()
{
Dog dog = new Dog();
dog.Jump();
System.out.println("正在执行的run方法");
}
public static void main(String[] args)
{
Dog d = new Dog();
d.run();
}
}
其实在上面的代码中,不一定要定义一个Dog对象才能调用run方法,因为当程序调用年run方法时,一定会定义一个对象,直接使用这个对象就可以了。在run方法中得到调用该方法的对象,可以使用this关键字,只有当该方法被调用的时候,它所代表的对象才被确定下来,谁调用该方法,this就代表谁。而且上面的代码中总共定义了两个对象,一个对象的run方法要依靠另一个对象的jump方法,很不符合逻辑。
package com;
public class Text8 {
public void Jump()
{
System.out.println("跑步");
}
public void run()
{
// Text8 ts = new Text8();
// ts.Jump();
this.Jump();
System.out.println("正在执行的jump方法");
}
public static void main(String[] args)
{
Text8 t = new Text8();
t.run();
}
}
java中允许一个对象成员直接调用另一个对象成员,也就是说this关键字可以省略。
public void run()
{
Jump();
System.out.println("正在执行的jump方法");
}
而对于static修饰的方法,里面不能包含有this引用,所以static修饰的方法不能访问非static修饰的成员或者,也就是静态成员不能直接访问非静态成员。非静态方法属于对象,只有创造出对象来才能调用它。
普通方法访问其他方、属性时,无需调用this引用。但是当方法中有局部变量和属性同名时,便要调用this引用。
static修饰的方法属于类,非静态方法属于对象。用static修饰的方法既可以用类来调用,也可以用对象来调用,其调用结果是一样的。
java中只有值传递,无论是传入引用还是值,都看作值传递,形参是引用的话代表的是地址