static(静态)

package cn.itcast.day10;
/*
 * static 
 * 类属于类的信息全部存放在方法区
 * 
 * */
public class Demo {

	public static void main(String[] args) {
		Person p=new Person();
		Person p1=new Person();
		p.gender='a';
		p1.gender='b';
		System.out.println(p.toString());
		System.out.println(p1.toString());
	}

}
class Person{
	int age;
	String name;
	static char gender;//静态声明变量
	@Override
	public String toString() {
		return "Person [gender="+gender + "]";
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
}

关键字----修饰符 变量、方法、代码块、内部类

修饰变量—静态变量
静态变量是随着类(所有信息)的加载(方法区的静态常量池)而加载静态区, 接着赋予初始值,
静态变量也叫类变量, 类优先对象存在,可以通过类名点的形式调用静态变量。 也可以通过对象调用。
静态变量底层就是一个被所有对象共享的地址—全局一份 静态变量–共享—属性是否适合共享?

(构造)方法中不可以定义静态变量,方法要等到调用时候内容才执行,静态变量要与类同级

修饰方法–静态方法
随着类的加载而加载到方法区的静态区,不会对静态方法进行赋予初始值,只是存放,当前调用也可以通过对象也可以调用
修饰代码块–静态代码块
在方法外类内static{},随着类的加载而加载只加载一次(被static修饰的内容都只加载一次)
父类静态—子类静态----父类对象-----子类对象
属性与对象同级,但是属性和构造代码块执行顺序一致
谁在前面谁先执行
static(静态)
final(最终)
关键字----修饰符 数据、方法、类
修饰数据–最终值
如果修饰的是基本数据类型----值不改变
如果修饰的是引用数据类型—地址值不改变
如果修饰的是属性保证对象创建之前有值,如果静态常量保证类加载之前赋值。
修饰方法–最终方法
可以重载
不可以重写
修饰类
最终类不能被继承(没有子类),可以有父类
抽象类有没有对象?没有对象,因为对象类也是类,就含有构造方法就可以创建对象,但是这个对象是由底层c语言来创建
java拿不到相当于没有

**static关键字----修饰符 变量、方法、代码块、内部类**

修饰变量—静态变量
静态变量是随着类(所有信息)的加载(方法区的静态常量池)而加载静态区, 接着赋予初始值,
静态变量也叫类变量, 类优先对象存在,可以通过类名点的形式调用静态变量。 也可以通过对象调用。
静态变量底层就是一个被所有对象共享的地址—全局一份 静态变量–共享—属性是否适合共享?

(构造)方法中不可以定义静态变量,方法要等到调用时候内容才执行,静态变量要与类同级

修饰方法–静态方法
随着类的加载而加载到方法区的静态区,不会对静态方法进行赋予初始值,只是存放,当前调用也可以通过对象也可以调用
静态方法不可以定义静态变量,方法要等到调用的时候内容才执行,静态变量与类同级
静态方法里不可以使用this,静态方法是类同级别的,this是对象级别的
main静态方法不可以直接调用非静态的属性和方法。静态的信息不能调用非静态的信息。非静态可以调用静态的

abstract(抽象)
如果父类的某个方法被所有的子类进行了不同的程度的重写,那么此时这个方法的方法体就没有实际意义,就把方法去掉
用abstract修饰就变成了抽象方法,如果一个类中存在抽象方法,那么这个类就要把所有的抽象方法进行重写,
如果不想全部重写就把普通类变成抽象类 抽象类中不一定含有抽象方法