面向对象的三大特征封装:将同一类事物的功能包装在一起,只对外提供访问接口
好处:
1. 实现专业的分工(你是使用者只需要关心怎么使用就行,无需了解具体实现细节)
2. 减少代码耦合(面向接口开发,互不干扰)
3. 可以自由修改类的内部结构(只要不影响使用者的功能,都可以随意改造)
继承:从已有的类派生出新的类,新的类可以有已有类的属性和行为,并拓展新的功能
多态:
多态是同一个行为具有多个不同表现形式或形态的能力
多态是同一个接口,使用不同的实例而执行不同操作
静态和实例变量(方法)的区别:语法区别:静态变量前要加static关键字,实例则不用
隶属区别:实例变量属于某个对象的属性,而静态属于类
运行区别:静态变量在JVM加载类时创建,实例变量在实例化对象时创建
位置区别:静态变量存放在JVM方法区,无法被回收;实例变量存放在堆中,不用就被回收
父子类实例化过程分析public class Parent { private static String name = initName(); private int age = initAge(); private static String initName(){ System.out.println("1父类静态变量初始化"); return "程序员Forlan"; } private int initAge(){ System.out.println("2父类普通变量初始化"); return 100; } static { System.out.println("3父类静态代码块"); } { System.out.println("4父类非静态代码块"); } public Parent(){ System.out.println("5父类构造函数"); } } public class Son extends Parent{ private static String name = initName(); private int age = initAge(); private static String initName(){ System.out.println("6子类静态变量初始化"); return "程序员Forlan"; } private int initAge(){ System.out.println("7子类普通变量初始化"); return 100; } static { System.out.println("8子类静态代码块"); } { System.out.println("9子类非静态代码块"); } public Son(){ System.out.println("10子类构造函数"); } } public static void main(String[] args) { new Son(); }