Java学习笔记07

1.权限修饰符/访问修饰符

public:公开的,公共的

protected:受保护的

(default):默认的,不加default关键词,不写任何内容

private:私有的

 

使用范围:

自己类中: public protected default private

同包(没有关系的类): public protected default

父子类(不同包):public protected

所有类(既不是同包,也没有父子类关系):public

范围: public > protected > default > private

什么时候使用

public: 想要提供给其他类使用的成员

protected: 有子类继承关系的成员

default: 平时练习用

private: 所有实体类中的成员变量使用

方法重写:

方法名/方法参数完全一致

修饰符:

子类访问权限要大于等于父类的访问权限

返回值类型:

void/基本数据类型: 必须一致

引用数据类型:

子类的返回值类型要小于等于父类的返回值类型

2.封装

1)为了保证成员变量的安全性,把它设置成私有的,也就是添加private修饰词.

2)给外部提供一对可以访问此成员变量的get()/set()

public class Student {
 private String name;
 private int age;

 public void setName(String n) {
 name = n;
 }
 public String getName() {
 return name;
 }

 public void setAge(int a) {
 age = a;
 }
 public int getAge() {
 return age;
 }
}

3.static关键词: 静态的

static可以修饰:成员方法/成员变量/代码块/内部类

1)静态变量

静态成员变量:

        1.属于类

        2.类名 .变量名 调用 ps: Student.money

        3.静态成员变量是被所有实例化对象所共享

        4.只加载一次

     普通成员变量:

        1.属于对象

        2.对象. 变量名  调用

        3.有几个对象,就有几个成员变量,并且是独立的

    2).静态成员方法

        1.在静态方法中不能调用非静态的成员变量和非静态的成员方法

        2.在非静态的成员方法中可以调用静态方法和静态变量

        3.属于类

        4.使用 类名.方法名 调用

    3).静态代码块

        1.在类加载时执行

            a.实例化对象

            b.使用静态方法

            c.使用静态变量

        2.作用: 优化代码,提升程序效率

        3.静态代码块可以有无数个,但只进行一次性的加载,只有一个

        4.在静态代码块中不能调用非静态成员变量

public class Student {
 private String name;
 private int age;
 // 学⽣的id
 private int sid;
 // 类变量,记录学⽣数量,分配学号
 public static int numberOfStudent = 0;

 public Student(String name, int age) {
 this.name = name;
 this.age = age;
 // 通过 numberOfStudent 给学⽣分配学号
 this.sid = ++numberOfStudent;
 }

 // 打印属性值
 public void show() {
 System.out.println("Student : name=" + name + ", age=" + age + ", sid="
+ sid);
 }
}
public class StuDemo {
 public static void main(String[] args) {
 Student s1 = new Student("张三", 23);
 Student s2 = new Student("李四", 24);
 Student s3 = new Student("王五", 25);
 Student s4 = new Student("赵六", 26);
 s1.show(); // Student : name=张三, age=23, sid=1
 s2.show(); // Student : name=李四, age=24, sid=2
 s3.show(); // Student : name=王五, age=25, sid=3
 s4.show(); // Student : name=赵六, age=26, sid=4
 }
}

     代码块:

        1.执行在构造方法之前

        2.作用:给成员变量初始化

            提取所有构造方法中重复的代码

存在父子类关系:

静态代码块 + 代码块 + 构造方法

父类静态代码块 -> 子类静态代码块 -> 父类代码块 -> 父类构造方法 -> 子类代码块 -> 子类构造方法

静态代码块和静态变量的执行顺序:

先写那个先执行那个

注意: 静态变量先执行,是可以进行运算操作

  静态代码块先执行,是不可以进行运算操作,因为变量未定义

xx.java -> xx.class -> 类加载,静态成员变量会随着类信息一起加载到 -> JVM中的方法区中

什么时候进行类加载?

使用类之前会进行类加载操作:

第一次使用类的情况:

1.new对象,实例化对象

2.调用静态成员变量

3.调用静态成员方法

结论:当在使用静态成员时,对象不一定存在

所以,变量不会放在构造方法中进行初始化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值