JAVA_DAY05知识重点整理(面向对象上)

1.static修饰的方法不能访问没有static修饰的方法(static修饰的方法是类被加载之后,创建实例之前生成的,没有static修饰的方法在这时还没有没加载,所以static修饰的成团不能加载),static修饰的成员变量和方法是属于类的,不再只属于实力,这也被称为类方法,和类变量

2.构造器是创建实例的基础,没有构造器就不能创建实例,当一个类没有构造器时,系统会提供一个默认构造器,一旦有一个构造器,系统将不再提供(new关键字其实就是在调用类的构造器 )

3.只有提供了get,set方法的才可以被称为属性,类在开头位置定义的被称为成员变量,在java中,就算没有声明成员变量,只提供了get,set方法的依旧可以被称为属性

4.成员变量可以用public,protected,private-------static,final来修饰,其中public,protected,private只可以出现一个,可以与static,final组合

5.方法可以用public,protected,private-------abstract,final-------static来修饰,其中public,protected,private只可以出现一个,abstract,final只可以出现一个,可以与static组合来使用

6.this最大作用就是让类中的一个方法去访问该类的另一个方法,this可以代表任何对象,在方法中出现,他代表的对象是不确定的(类型是确定的),只有在这个方法被调用时,this再才被确定,谁调用的this就是谁,大部分情况下,this是可以被省略的,但是他确实存在,还有就是,static中不允许出现this,因为这是不合逻辑的,因为this指的就是一个实例

7.当局部变量与成员变量重名时,也可以使用this

8.在以后的编程中,尽量不要用实例来调用类方法,类变量(尽管这是可行的)

 9.对于基本类型的参数被传入方法后,其实只是传入了一个参数的副本,就算方法再怎么改变这个被传入的参数副本,真实的参数也不会受到影响!!!!!其实引用类型的函数也是这个原理,会复制一个引用的副本传入方法中,但这个副本与真实的引用变量都指向同一个实例,所以,方法内的行为会影响到这个实例

10.一个只有一个参数的方法,被有个可变参数重载,当传入一个参数时,调用的是一个参数的方法

11.一个类在使用之前要经过类加载,类验证,类准备,类解析,类初始化几个阶段

12。当创建一个子类时,系统不止给子类的实例变量分配内存,也会给他的父类分配内存,就算是子类重写了父类的变量方法,其效果也只是隐藏而不是覆盖,系统依然会给被覆盖的元素分配内存,并可以通过super.的方式调用

13.至于何时用继承合适用组合,就只要弄清楚一个概念,继承是is.a,组合是has.a

14.构造器是对创建实例进行初始化操作,而初始化块则是会在构造器之前执行,静态代码块则会在加载类时创建

15.一个类创建的过程是先为实例变量变量分配内存(注意,这里没有赋值,就算在声明变量时指出了int a = 6,那也不会赋值),执行初始代码块,在执行声明变量时指定的值,然后执行构造器

16.实际上,初始化代码块只是假象,在编译时,会被还原到每条构造器的最前面

17.与构造器相似,在创建类时,系统总会先去执行父类中的初始化代码块,然后构造器,然后下一层子类的静态代码块,构造器,这样

18.静态代码块是加载类执行的(所以他只会被执行一次,就算创建相同的实例多个,也只会在第一次被加载时创建),他优先于实例变量前出现,所以不可以去初始化实例变量,只能对类元素进行操作,与之前的一样,系统会先执行父类的静态代码块

猜你喜欢

转载自blog.csdn.net/weixin_42668719/article/details/82078882