重要的java关键字
1、private关键字
private是用于隐藏对象的属性和细节,仅对外提供公共的方法进行访问。
private关键字需要注意一下几点:
a. 当类的成员变量使用private 修饰符修饰,那么就不可以直接访问到该成员变量.
b. 当使用private 修饰的成员变量或者成员方法,仅能在本类中使用
c. private 对于main 方法的修饰,也是可以产生作用的.
b. 当使用private 修饰的成员变量或者成员方法,仅能在本类中使用
c. private 对于main 方法的修饰,也是可以产生作用的.
例:public class DemoPrivate{
public static void main(String[] args){
Person person =new Person();
person.setAge(20);
person.age=20;//error
person.action();
}
}
class Person{
private int age;
public static void main(String[] args){
Person person =new Person();
person.setAge(20);
person.age=20;//error
person.action();
}
}
class Person{
private int age;
void setAge(int ageParm){
if(ageParm>0 && ageParm<150){
age = ageParm;
}
}
}
2、this关键字
this关键字代表了当前对象的引用.简单的说就是,当前谁来调用,那么方法中的this 就代表谁。
this可以加在成员变量的前面来指定对应的引用,也可以加在成员方法的前面。对于成员变量可以区分出来的场景,this 可加也可以不加,实际效果相同。
理解this关键字需要知道java的一个优先原则,就是对于一个方法来说,如果传递的形参的变量名称和类的成员变量名称相同,虚拟机在处理的时候优先当做方法的形参来处理.所以,在形参和变量名相同的时候,需要this关键字来指定成员变量。
例:public class DemoClassTest{
public static void main(String[] args){
Person person = new Person();
person.entity = "Japan";
public static void main(String[] args){
Person person = new Person();
person.entity = "Japan";
person.getAge();
}
}
class Person{
private int age=20;
static String entity;
Person(){
}
Person(int age){
this.age = age;
}
void setAge(int age){
this.age = age;
}
//拿到成员变量的值
int getAge(){
return this.age;
}
}
}
}
class Person{
private int age=20;
static String entity;
Person(){
}
Person(int age){
this.age = age;
}
void setAge(int age){
this.age = age;
}
//拿到成员变量的值
int getAge(){
return this.age;
}
}
3、super关键字
super父类对象的应用
super关键字与类的继承有关。一般来说,当子类和父类具有相同的变量或者方法时,子类的会覆盖父类的方法和变量,如果这时想要在子类中调用原来父类的方法或变量,那就需要用到super关键字。这与this关键字可以对比着理解。
例:public class ExtendsDemo5{
public static void main(String[] args){
Son son = new Son();
System.out.println("-------------");
}
}
class Father{
Father(int num){
System.out.println("father 有参构造");
}
}
class Son extends Father{
Son(){
this(10);
System.out.println("son 默认构造");
}
Son(int num){
super(10);
System.out.println("son 有参构造");
}
public static void main(String[] args){
Son son = new Son();
System.out.println("-------------");
}
}
class Father{
Father(int num){
System.out.println("father 有参构造");
}
}
class Son extends Father{
Son(){
this(10);
System.out.println("son 默认构造");
}
Son(int num){
super(10);
System.out.println("son 有参构造");
}
4、static关键字
static关键字为静态修饰符。被static修饰的成员称为类成员或者静态成员。
注意:在main函数调用的方法必须要是静态的。
static关键字需要注意以下几点:
a.它是随着类加载而加载,保存在静态方法区
b.优先于对象创建
c.被类的所有对象共享
因为静态的成员变量会保存在该class的静态方法区中,所以每个对象看到的都是同一份.
d.可以通过类名来访问也可以通过对象名来访问。
效果是一样的。
e.推荐通过类名来访问
f.静态的成员,一般称为类相关的成员。
f.static 修饰符既可以修饰成员变量,也可以修饰成员方法。 且修饰之后,就可以通过类名来直接访问到。
g.this变量在静态方法中不可以使用
h.静态方法中只能访问静态成员变量和静态方法。
非静态方法既可以访问静态成员和方法也可以访问非静态成员和方法。
例:public class DemoStatic{
public static void main(String[] args){
Person person = new Person();
Person.action();
method();
}
static void method(){
System.out.println("method");
}
}
class Person{
static String name = "diffo";
static int age = 20;
static void action(){
System.out.println("speak:"+age);
}
}
5、fianl关键字
在默认情况下。所有成员变量或方法都可以被隐藏或重写。如果父类的成员不希望被子类的成员隐藏或重写,则可以将其声明为final关键字。
final关键字需要注意以下两点:
a.final修饰类
final如果修饰一个类,该类不能被继承.
final如果修饰一个类,该类不能被继承.
b.final修饰类的成员变量
该成员变量的值不可修改。
final修饰类的成员变量在对象创建之前都可以.
a.构造代码块中可以进行初始化
b.构造方法中可以进行初始化
c.定义成员变量的时候,可以直接进行初始化.
注意一点: 这三种方式同时只能用一种。在大多数的场景下,我们的final成员变量都会配合public static 一起使用.
例:public class FinalDemo1{
public static void main(String[] args){
Person person = new Person();
//rson.sayNum();
}
}
class Person{
//final 修饰成员变量,该值不可修改.
static final int num;
static{
num = 10;
}
Person(){
}
void sayNum(){
System.out.println(num);
}
}
public static void main(String[] args){
Person person = new Person();
//rson.sayNum();
}
}
class Person{
//final 修饰成员变量,该值不可修改.
static final int num;
static{
num = 10;
}
Person(){
}
void sayNum(){
System.out.println(num);
}
}