本文共 2986 字,大约阅读时间需要 9 分钟。
public修饰符:任何类都可以访问
protected修饰符:类及其子类或同一个包下的类可 以访问default(默认不写):类及当前包下可以访问
private修饰符:访问权限仅限于类内部
static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。但是在非静态成员方法中可以访问静态成员方法或者变量。
package Test;public class Test { public static void main(String[] args) { Test2 xm=new Test2(19,"男", "小明");//对Test2类进行实例化 //name变量为静态变量,所以直接类名.变量名就可以访问,但是age、sex是非静态,需要进行实例化,通过对象名.变量名进行访问 System.out.println(Test2.name+"的年龄为 : "+xm.age); System.out.println(Test2.name+"的性别为 : "+xm.sex); //play方法为静态方法,直接类名.方法名就可以调用,但是run方法是非静态方法,所以也需要实例化,通过对象名.方法名进行调用 Test2.play(); xm.run(); }}class Test2{ //name变量为静态,age、sex变量为非静态变量 static String name; int age; String sex; public Test2(int age, String sex,String name) { this.age = age; this.sex = sex; this.name=name; } //非静态方法run void run() { System.out.println("跑步。。。。"); } //静态方法play static void play() { System.out.println("打篮球。。。"); } }
运行结果为
小明的年龄为 : 19小明的性别为 : 男打篮球。。。跑。。。。
看如下的例子:
package Test;public class Test3 { static String name="小红";//静态变量 public static void main(String[] args) { new Test3().Xin();//调用Xin方法 } void Xin() { String name="小明";//非静态变量,局部变量 System.out.println("名字为:"+this.name); }}
运行结果为:
名字为:小红
通过例子可以看出,this.name 调用的变量是类的成员变量,所以说,this.变量名 是用来调用类的成员变量的方法,所以静态和非静态都可以通过this.来调用,如果是方法中定义的局部变量,则不能用this.变量名 来调用。
final关键字是Java中的关键字,其意思为最终的,不可以在进行修改,可以修饰变量,类,方法
用final关键字修饰的变量,只能进行一次赋值操作,并且在生存期内不可以改变它的值。final 修饰的变量
可以先声明,后赋值。但是只能定义一次final变量。
当用final作用于类的成员变量时,成员变量(局部变量只 需要 保证在使用之前被初始化赋值即可)必须在
定义时或者构造器中进行初始化赋值。
编写方法时,可以在参数前面添加final关键字,它表示在整个方法中,不会(实际上是不能)改 变参数
的值,具体类似于修饰数据。
即不能改变参数的值,但是可以改变引用类型参数的对象的 值。同时,即使没有final的修饰,参数的改
变也不会影响到方法外的变量。
final关键字修饰方法,它表示该方法不能被覆盖(重写)。另外类中所有的private方法都隐式指定为是final的,由于它无法在类外使用private修饰的方法,所以没有办法覆盖它。
用final关键字修饰的类是无法被继承的,且final类中的所有成员方法都会被隐式地指定为final方法
abstract 意思为抽象,是定义抽象类,抽象方法的关键字
父类是将子类所共同拥有的属性和方法进行抽取,这些属性和方法中,有的是已经明确实现了的,有的还
无法确定,那么我们就可以将其定义成抽象,在后日子类进行重用,进行具体化。这样,抽象类也就诞生
了。
抽象类是为了把相同的但不确定的东西的提取出来,为了以后的重用。定义成抽象类的目的,就是为了在
子类中实现抽象类。
比如说,定义一个球类运动父类,球类名字都能确定,但是具体怎么玩,没有固定的方法,可能是拍着玩(排球),有可能是用拍子击打玩(乒乓球),这个时候就可以将怎么玩这个方法定义成一个抽象方法。
package Test;class Test4 extends QiuY{ //Test4继承抽象类QiuY //进行对抽象方法的实现 @Override void QiuW(String name) { super.qiuname=name; System.out.println(qiuname+"应该用拍子打"); }}//定义一个抽象类,因为类中有抽象方法,所以必须是抽象类abstract class QiuY{ String qiuname; //因为怎么玩不确定,所以要定义为抽象方法 abstract void QiuW(String name);}public class Test45{ public static void main(String[] args) { Test4 test2=new Test4(); test2.QiuW("乒乓球"); }}
运行结果为:
乒乓球应该用拍子打
1、用abstract修饰的类,即抽象类;用abstract修饰的方法,即抽象方法。
2、一旦类中包含了abstract方法,那类该类必须声明为abstract类,且该类不能用来创建对象。
在学习看来,这几个关键字大概是这样的理解,可以多去构思一下,这几个关键字到底本质上都是干什么用的,这次介绍的这几个关键字都是一些方法、变量、类的修饰符关键字,可以更好的让以后在写程序的小伙伴们可以严谨一些,解决自己很不理解的修饰符
转载地址:http://wmsa.baihongyu.com/