final关键词
概念:final的意思为最终,不可变。final是个修饰符,它能够用来润饰类,类的成员,以及局部变量。不能润饰构造方法。
特点:
1.final润饰的类不能够被继承,但能够继承别的类。
class Yy {}
final class Fu extends Yy{} //能够继承Yy类
class Zi extends Fu{} //不能继承Fu类
2.final润饰的办法不能够被子类重写,但父类中没有被final润饰办法,子类重写后能够加final。
class Fu {
// final润饰的办法,不能够被笼罩,但能够继承应用
public final void method1(){}
public void method2(){}
}
class Zi extends Fu {
//重写method2办法
public final void method2(){}
}//退出Java开发交换君样:756584822一起吹水聊天
3 final润饰的变量称为常量,这些变量只能赋值一次。而且一生不变。
final int i = 20;
i = 30; //赋值报错,final润饰的变量只能赋值一次
4.援用类型的变量值为对象地址值,地址值不能更改,然而地址内的对象属性值能够批改。
final Person p = new Person();
Person p2 = new Person();
p = p2; //final润饰的变量p,所记录的地址值不能扭转
p.name = "小明";//能够更改p对象中name属性值
5.润饰成员变量,须要在创建对象前赋值,否则报错。(当没有显式赋值时,多个构造方法的均须要`为其赋值。)
class Demo {
//间接赋值
final int m = 100;
//final润饰的成员变量,须要在创建对象前赋值,否则报错。
final int n;
public Demo(){
//能够在创建对象时所调用的构造方法中,为变量n赋值
n = 2016;
}
}
static关键词
概念:static是动态修饰符,个别用来润饰类中的成员。不创建对象,就能够调用办法。
特点:
1.被static润饰的成员变量属于类,不属于这个类的某个对象。(也就是说,多个对象在拜访或批改static润饰的成员变量时,其中一个对象将static成员变量值进行了批改,其余对象中的static成员变量值跟着扭转,即多个对象共享同一个static成员变量)
class Demo {
public static int num = 100;
}
class Test {
public static void main(String[] args) {
Demo d1 = new Demo();
Demo d2 = new Demo();
d1.num = 200;
System.out.println(d1.num); //后果为200
System.out.println(d2.num); //后果为200
}
}
2.被static润饰的成员能够并且倡议通过类名间接拜访。
拜访动态成员的格局:
类名.动态成员变量名
类名.动态成员办法名(参数)
对象名.动态成员变量名 ------不倡议应用该形式,会呈现正告
对象名.动态成员办法名(参数) ------不倡议应用该形式,会呈现正告
class Demo {
//动态成员变量
public static int num = 100;
//静态方法
public static void method(){
System.out.println("静态方法");
}
}
class Test {
public static void main(String[] args) {
System.out.println(Demo.num);
Demo.method();
}
}
注意事项:
- 动态内容是优先于对象存在,只能拜访动态,不能应用this/super。动态润饰的内容存于动态区。
class Demo {
//成员变量
public int num = 100;
//静态方法
public static void method(){
//this.num; 不能应用this/super。
System.out.println(this.num);
}//退出Java开发交换君样:756584822一起吹水聊天
}
- 同一个类中,动态成员只能拜访动态成员
class Demo {
//成员变量
public int num = 100;
//动态成员变量
public static int count = 200;
//静态方法
public static void method(){
//System.out.println(num); 静态方法中,只能拜访动态成员变量或动态成员办法
System.out.println(count);
}
}
3.main办法为静态方法仅仅为程序执行入口,它不属于任何一个对象,能够定义在任意类中。
4.多态调用办法中,编译看=右边,父类有,编译胜利,父类没有,编译失败
- 运行,静态方法,运行父类中的静态方法,
- 运行,非静态方法,运行子类的重写办法
- 成员变量,编译运行全是父类
定义动态常量
概念:开发中,咱们想在类中定义一个动态常量,通常应用public static final润饰的变量来实现定义。此时变量名全副大写,多个单词应用下划线连贯。
定义格局:public static final 数据类型 变量名 = 值;
public class School {
public static final String SCHOOL_NAME = "北京大学";
public static void method(){
System.out.println("一个静态方法");
}//退出Java开发交换君样:756584822一起吹水聊天
}
当咱们想应用类的动态成员时,不须要创建对象,间接应用类名来拜访即可。
System.out.println(Company.SCHOOL_NAME);
Company.method(); // 调用一个静态方法
留神:
接口中的每个成员变量都默认应用public static final润饰。
所有接口中的成员变量已是动态常量,因为接口没有构造方法,所以必须显示赋值。能够间接用接口名拜访。
interface Inter {
public static final int COUNT = 100;
}
拜访接口的成员变量:
Inter.COUNT
发表回复