Java小结03
static 关键字 静态
1.可以用来修饰变量、方法、代码块
2.静态修饰的变量内存中永远只存在一份,所以可以减少内存开销,实现数据工具。
3.静态变量在本类中任何位置都可以访问,包括静态方法和非静态方法都可以,但是实例属性不能直接在静态方法中访问,需要new对象。
4.静态变量在其他的类中直接使用类名+.访问即可。
5.不能在方法中定义静态的属性,普通方法和静态方法,因为静态变量属于类级别的,只能定义在类内部。
6.普通方法中可以直接访问静态方法,静态变量。
7.静态代码块
7.2 当类加载的时候就执行,多个代码块按顺序执行,并且只执行一次。
7.1用来实现一些前置的操作,比如参数初始化,比如数据库连接等……
静态方法
不能直接访问实例属性和方法,需要先new对象。
可以直接访问静态属性和方法。
类的加载顺序
1.当我们第一次创建对象或者访问这个类的时候,jvm先去方法去加载这个类信息文件,然后再堆中开辟空间,第三步将栈中的引用指向堆中的对象。
2.我们创建对象的过程就是动态的,在我们程序的运行过程中,动态的开辟空间,并且属性赋值,调用方法等操作……这些对象是会随着程序的执行动态开辟空间或者垃圾回收。
3.当我们的类开始加载就已经存在的内容,如果不手动进行清除,那么静态修饰的变量将会一直存在。
继承
继承是java中重要的代码重用手段之一,Java只支持单根继承,即一个类只能有一个直接父类,但是可以有N多个间接父类。
创建之类对象将默认调用父类的无参构造方法,因为先有父类再有子类。如果显式的调用了父类的有参构造,将不再调用父类的无参构造。
子类可以继承父类的属性,方法。不能继承构造方法,可以调用。
①在同一个包中,默认修饰的或者更大的范围。
②不在同一个包中,必须使用protected修饰才能继承。
super关键字
①可以用于访问父类的属性、方法、构造方法,用法同this关键字一致。
②访问属性,直接super+点调用。
③访问方法,直接super+点调用。
访问父类的构造方法,必须在子类构造方法的第一句
重写
(1)存在于父子类之间
(2)方法名称一致
(3)参数列表一致
(4)访问修饰符不能严于父类
(5)返回值相同或者是其子类
(6)静态方法可以被继承,但是不能被重写
多态
多态的两种表现形式:
①父类作为形参
实际传入参数是子类对象,这里实现自动向上转型
②父类作为返回值
实际返回值是子类对象,这里实现自动向上转型
向上转型
格式:
父类 name = new 子类();
可以访问的方法:父类独有的方法,和子类重写父类的方法,不能调用子类独有的方法
向下转型
格式:
1)父类 name = new 子类();
2)子类 sonName = (子类)name;
instanceof关键字
子父类类型转换时,可以使用instanceif关键字来避免出现ClassCastException,类型转换异常。
格式:
引用 instanceof 类型 ,返回值为布尔类型,如果成立就true,否则就false。
final关键字
(1)final关键字 最终的
(2)可以修饰 属性 方法 类
(3)修饰类表示本类不能继承
(4)修饰方法表示方法不能被重写,可以被继承
(5)修饰属性表示常量,通常在定义的时候赋值,也可以在构造方法中赋值,不能重复赋值。
(6)static+final修饰表示静态常量,只能定义在类的内部,必须在定义的时候初始化,也不能重复赋值。
abstract 关键字 抽象的
(1)抽象方法没有方法体 使用abstract修饰
(2)抽象方法必须先存在于抽象类中 同样也使用abstract来修饰
(3)子类必须重写父类的抽象方法(普通方法根据需求是否重写) 除非子类也是抽象类
(4)抽象类不能直接new对象(不能实例化) 必须通过new子类的方式来创建对象 多态
(5)可以定义属性,可以定义普通方法,可以定义构造方法,给子类使用