目的;(1)先与对象创建可以做的操作
(2)代码块
(3)继承
(4)多态
一、先与对象创建可以做的操作
1、首先是我们的构造方法,嗯,从内存说起吧。我们创建一个类(抽象)时,系统会将它存放在方法区,然后再在堆里分配一个空间存储我们的对象,其中会进行赋值,赋值后,再把这个对象的地址给在栈里面的局部变量,而我们的构造方法就在这个赋值的过程中,因此之所以说是在对象“之前”,是因为,我们通常用的就是那个变量所指的地址而不是那个对象。
2、静态,也就是static 。上面第一点我提到过,创建类时会在方法区给类一个空间,而在这个过程中,系统会将静态属性或方法放在另一个地方,嗯,具体什么地方么你就叫它静态区吧,这样会产生一个结果,那就是这个静态区会在运行这个类时先于这个类运行,那么,这里也只能运行静态区里的东西了,这也是为啥静态方法里不能有对象方法和对象的原因了。
3、代码块,就是一个方法前面啥也没有,即这种形式“{}”,它会在对象创建之前运行,嗯,从上到下的顺序,类似与C语言吧。
二、代码块
1、代码块在对象创建之前/构造方法之前就被调用,而每个类都有构造方法,我们没有定义的系统会自动分配一个。
2、代码块规则
(1)、顺序从上到下
(2)、可以有多个代码块
(3)、静态代码块里面不能调用成员变量和实例方法
(4)、代码块无法直接调用,可操作性不强,尽量少写,可以将多个代码块合在一起
(5)、修饰符只有static
(6)、用到了成员变量的话,放在其之后
三、继承
1、形式:继承 A extends B
其实就是子类获得父类的方法和属性,并且看情况和需要添加自己的属性和方法
注意:Java只能但继承,但可以变向“多继承”,如一个子类的父类其实是其它类的子类,那么这个子类就相当与继承多个了。
2、子类会继承public、而private子类不会继承、protected相同包类的子类可以继承
3、当调用子类的一个方法时,如果没有就会到父类里面去查找。有的话会形成一个“覆盖”,即系统默认为子类的这个方法,如果要使用父类的方法,可以用super(加方法名)。
我们可以用 @Override 重写内容。 修改父类的方法时,父类自己的方法可以根据需求决定要还是不要,子类可以自己在父类方法实现之前或实现之后
4、 子类中构造函数必须先使用父类的构造函数,但是父类没有时可以随便,但父类有一个有参构造函数时,在子类的构造函数区域内用super(父类的参数),再把剩下的参数用this.参数=参数。
四·、多态(就很简单了)
1、同一个方法 多种实现——子类覆盖方法(重写)
2、如果有继承关系:子类的对象可以使用父类变量接收——类型的自动向上转换,不能反过来,而所以的类都直接或间接的是object的子类,因此任何类的对象都可以用object的变量来接收(如果需要子类的方法时,我们可以用A(类名)+变量名=(A)+object 那个变量(其它也行))。
感想:了解的知识还是不够全面呀,只能将老师讲的内容大致打出来,自己延伸时却又会出现很多问题,嗯,加油吧!