一、面向对象
面向对象的三大特征:封装、继承、多态。
五大基本原则:单一职责原则(每个类只做一件事)、开放封闭原则(可扩展,不可修改)、依赖倒置原则(依赖抽象)、接口隔离(使用多的小接口,而非一个总接口)、里氏替换原则(子类能够替换基类)。
1、值传递与引用传递
Java中传递的参数分为两类,一类是基本类型,一类是引用类型,传递基本类型时是直接将值进行传递,引用类型的传参是传递应用类型的地址值。所以都可以叫做值传递。
2、三大特征的分析
多态:同一个接口使用不同的实例可以执行不同的操作。存在的必要条件:继承、重写、父类指向子类的引用。即子类继承自父类并重写父类中的方法,创建对象时,父类进行向上转型。例:Parent p = new Child(). 构造函数分为无参和带参构造函数,构造函数为了类提供了不同的创建实例方式。
3、变量
类变量:由static修饰的成员变量,为类的所有的实例对象所共享
成员变量:每个实例对象都有自己的成员变量,实例之间不进行成员变量的共享
局部变量:方法体之内的变量,只能在该方法之内被使用
public class VariableTest {
// 类变量(静态变量)
private static int STATIC_INTEGER = 10;
// 成员变量
private int i = 100;
// 测试类变量
public int staticTest() {
STATIC_INTEGER++; return STATIC_INTEGER;
}
// 测试成员变量
public int commonTest() {
i++; return i;
}
}
public class VariableTest01 {
public static void main(String[] args) {
// 测试静态变量是否为对象共享
VariableTest v1 = new VariableTest();
System.out.println(v1.staticTest()); // 11
VariableTest v2 = new VariableTest();
System.out.println(v2.staticTest()); // 12
// 测试成员变量是否为对象共享
VariableTest v3 = new VariableTest();
System.out.println(v3.commonTest()); // 101
VariableTest v4 = new VariableTest();
System.out.println(v4.commonTest()); // 101
}
}
4、类的加载顺序
1、虚拟机在首次加载Java类时,会对静态初始化块、静态成员变量、静态方法进行一次初始化
2、只有在调用new方法时才会创建类的实例
3、类实例创建过程:按照父子继承关系进行初始化,首先执行父类的初始化块部分,然后是父类的构造方法;再执行本类继承的子类的初始化块,最后是子类的构造方法
4、类实例销毁时候,首先销毁子类部分,再销毁父类部分
// 父类
public class Parent {
public Parent() {
System.out.println("父类构造方法");
}
{
System.out.println("父类普通代码块");
}
static {
System.out.println("父类静态代码块");
}
public static void method1(){
System.out.println("父类静态方法");
}
public void method2() {
System.out.println("父类普通方法");
}
}
public class Child extends Parent{
public Child() {
System.out.println("子类构造方法");
}
{
System.out.println("子类普通代码块");
}
static {
System.out.println("子类静态代码块");
}
public static void method1(){
System.out.println("子类静态方法");
}
public void method2() {
System.out.println("子类普通方法");
}
}
// 测试类
public class ClassInit {
public static void main(String[] args) {
Child child = new Child();
child.method2();
child.method1();
}
}
结果:
父类静态代码块 子类静态代码块 父类普通代码块 父类构造方法 子类普通代码块 子类构造方法 子类普通方法 子类静态方法
网友评论