1、抽象类不能创建对象,Animal animal = new Animal();
动物这是一个抽象概念,需要一个具体实现才可以,如果这样创建对象编译会报错,必须通过子类extends继承父类Animal,子类的具体实现,来创建Animal类的对象;
2、抽象类可以有构造方法,用来创建子类的对象的,初始化父类的成员使用的,在子类构造方法中,有默认的super()方法,用来方法访问父类的构造方法;
【a】如果父类没有构造方法,那么将无法进行创建具体的子类的对象的,可以理解为父类没有再生的功能,不能创建新的子类对象;
3、抽象父类的子类,必须覆盖重写父类的所有抽象方法,如果没有完全重写,那么子类也必须是一个抽象类;因为是父子类继承的关系,即使没有完全重写父类的抽象方法,那么子类也是默认具体这个抽象类的,所有继承的子类必须覆盖重写父类的所有的抽象方法;
4、接口是java的一种引用类型,是方法的集合,如果类的内部封装了成员变量、构造方法和成员方法;
【a】在接口内部主要封装:
【1】抽象方法
【2】默认方法-----JDK7之前
【3】静态方法-----JDK8
【4】私有方法-----JDK9
【b】接口不是一个类,而是另一种引用数据类型
5、非抽象类实现类接口
【1】必须重写接口中所有的抽象方法
【2】继承了接口的默认方法,即可以直接调用,也可以重写
6、接口中的静态方法,只能使用接口名调用,不可以通过实现类的类名或者实现类的对象调用;接口中有多个抽象方法时,实现类必须覆盖重写所有的抽象方法,如果抽象方法重名,只需要重写一次就可以了;
7、for r倒序遍历快捷键
8、如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用它;
如果有了static关键字,那么不需要创建对象,直接就能通过类名称来使用它;
9、对static静态随记总结
【1】.java文件–》源代码文件–》用于程序员开发代码和修改代码的
【2】
【a】栈:是方法,具体运行的代码
【b】堆:new出来的对象+字符串常量池
【c】方法区:.class文件字节码文件+常量池
类被加载?运行哪个类,谁就先被加载;
加载class文件产生一个内存区,分两个部分,一个是静态一个非静态区;
【注意】
【a】静态不能访问非静态,因为静态优先于非静态在方法区进行加载初始化完成,此时并没有对象产生,静态不能访问不存在的对象的;但当静态完全加载了,就可以直接使用静态变量和静态方法了;
【b】成员在类中不会初始化,因为成员不属于类,什么时候使用什么时候被加载,什么时候new对象什么时候使用;
【c】在方法里定义变量–》局部变量–》作用:接收堆内存中创建的Student对象的地址值;
【d】在堆中开辟一块内存空间,对象是根据类进行创建的,指向方法区,找到字节码文件,同时加载所有的成员变量,并赋值默认值,new对象后对成员变量进行赋值,将地址值赋值给栈中的方法的局部变量,得到地址后,局部变量指向堆中的内存空间;此时完成初始化动作;
【e】成员变量在堆中进行初始化,局部变量是在调用方法的时候,并且方法执行到了变量的位置,才进行初始化动作的;
【f】初始化顺序:
在方法区中静态变量先初始化—》有对象了会初始化成员变量—》有赋值的时候,会在方法中初始化局部变量
【g】对象是在类被加载完成之后,才创建的,当对象创建完成之后,是可以直接使用静态的;
书读百遍其义自见,夯实基础,才能得心应手,明天继续回顾总结,共勉,以马内利
















