前言
● 关键字this&super,static
● 代码块
● 访问权限修饰符
一、关键字 this&super,static
this
this 是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。
当我们自定义一个类时,可以通过 this 关键字来找到我们需要引用的成员变量,这也是 this 的一般应用,同时,当类中出现与成员变量同名的形参时,可以通过 this 来区分,即变量名前有 this关键字的为该类的成员变量而非形参。
super
super 可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。
通过super关键字我们就可以调用父类的成员变量和方法。
两者都可以通过 this(参数),super(参数)来调用本类或父类中的构造函数。
class Country {
String name;
void value() {
name = "China";
}
}
class City extends Country {
String name;
void value() {
name = "Shanghai";
super.value(); //调用父类的方法
System.out.println(name);
System.out.println(super.name);
}
public static void main(String[] args) {
City c=new City();
c.value();
}
}
运行结果:
Shanghai
China
static
static被称为静态,可以用来修饰类的属性,方法,代码块,内部类。 静态成员不依赖于类的特定实例,被类的所有实例共享,就是说 static 修饰的方法或者变量不需要依赖于对象来进行访问,只要这个类被加载, 静态成员就会被加载创建。
特点:
static 所修饰的成员被所有对象共享,其在内存中只存在一个,而不像其他类成员可创建多个对象。
static 所修饰的方法称为静态方法,在本类中可直接被调用,在其它类中可通过(类名.静态方法名)调用。静态方法内部只能访问同样由 static 修饰的属性或方法,也不能有 this 和 super
模拟卖票
public class TicketSeller{
private static int ticket=10;//票数只有一份 声明为静态的
public static void sellticket(){
ticket=ticket-1;
System.out.println("卖票的静态方法");
}
public static void main(String[] args) {
TicketSeller .sellticket();//没有创建对象也可以访问静态方法
}
}
二、代码块
代码块在类中声明,类似一个没有名称的方法体(代码块),代码分实例块和静态块
实例块: 每次创建对象时自动调用
静态块: 类加载时自动调用,仅一次,与是否创建对象无关
三、访问权限修饰符
Java中有四个权限访问修饰符,权限从大到小依次为:
1)public: 公共权限 修饰类、属性、方法。可以在任意类中访问
2)protected: 受保护的权限 修饰属性、方法。可以在同包类访问,如果 不是同包类,必须是该类的子类才可以访问。
3)default: 同包权限 修饰类、属性、方法。只能在同包的类访问
4)private: 私有权限 修饰属性、方法。 只能在本类中
其实就是为了控制访问权限的大小,像一些私密成员或者信息就可以用 private 修饰用来保护信息安全