1.面向对象思想
把构成问题的各种事物,抽象成各个对象,这些对象具有解决很多类似问题的行为(方法)。
把具有相同属性和行为的某一类事物抽象成一个类,然后用类来创建对象。
2.类与对象
类是对一类事物的描述,而对象是类的一个具体的实例,类是对象的模板,对象是类的具体表现。
3.成员变量和局部变量
成员变量和局部变量的区别:
(1)生命周期不同:成员变量的生命周期是从(创建对象之后)声明开始,局部变量的声明周期是存在的方法中;
(2)作用范围不同:成员变量的作用范围是对象创建之后,局部变量的作用范围是所在的方法;
(3)成员变量可以只声明不赋值,因为会有默认赋值,而局部变量声明时必须赋值;
(4)成员变量是属于对象的,它存储在堆空间中,而局部变量是属于方法的,存储在栈空间中。
4.匿名对象
创建一个对象需要开辟两块内存空间,一块是在栈中,另一块是在堆中,栈中存放堆中的地址值,这样就比较方便我们对这个对象的后续操作。
匿名对象指的是在堆中开辟一块内存空间,但是没有将堆中的地址值赋值给栈中的变量,这样的对象我们只能值声明时对其操作,后续无法再对其进行操作。
5.this关键字
在类的非静态方法中,this关键字可以表示为当前类的一个实例对象。
this关键字的用法:
(1)区分局部变量和成员变量;
(2)构造器的互调;
(3)调用类中其他的方法。
6.super关键字
super是子类对父类中的属性和方法进行访问和调用的关键字。
super关键字的用法:
(1)子类访问父类的属性;
(2)子类调用父类的方法;
(3)子类调用父类的构造器。
7.构造方法
类中的构造方法也叫构造器,是在创建对象的时候必须调用的方法。
(1)构造方法的特点:
①方法名必须和类名保持一致;
②方法没有返回值类型,如果是Student类,那么构造方法为public Student(){}。
(2)每一个类中都有一个默认的无参的构造方法,如果类中只声明定义了有参的构造方法,那么默认的无参构造方法不存在;
(3)构造方法的作用
①创建对象的时候,new后面跟着的必须是类中存在的构造方法;
②构造方法中的代码,会在创建对象之后被调用,对象的属性完成初始化。
(4)当类中存在多个构造方法时(构造方法的重载,即列表参数不同),this关键字可以被使用在构造方法的互调。
8.封装
封装的好处:①提高代码的安全性;②提高代码的复用性;③提高代码的可维护性;④简化外部的调用。
封装,用通俗的语言来说,就是把类中的属性都私有化(用private访问修饰符修饰),然后对外提供公共的访问方法。
9.继承
继承的好处:①提高代码的复用性;②类与类之间产生了关系,是多态的前提;
子类继承父类的时候,使用extends关键字
在java中,类与类之间的继承关系是单继承,
10.多态
多态的前提:
(1)子类继承父类;
(2)子类重写父类中的方法;
(3)父类的引用指向子类对象。
11.抽象类
关键字abstract可以修饰类,方法。
抽象类中可以没有抽象方法,但是有抽象方法的类必须声明成抽象类。
抽象方法的特点:只有方法的声明,没有方法的实现。
抽象类和非抽象类的区别:
(1)抽象类使用了abstract关键字,而非抽象类没有使用abstract关键字;
(2)抽象类中可以写抽象方法,但是非抽象类不可以写抽象方法;
(3)抽象类不可以实例化创建对象,而非抽象类中可以实例化创建对象。
12.接口
接口的定义关键字:interface
接口里面的属性,默认是public static final修饰的;
接口里面的方法,默认是public abstract修饰的。
13.内部类
成员内部类:和成员属性、成员方法同级,注意,成员内部类中不可以编写静态的属性和方法。
静态内部类:和成员内部类类似,只不过多加了一个static修饰符,可以编写静态的属性和方法。
局部内部类:声明在外部类的方法中,相当于局部变量,作用范围在当前方法中。
匿名内部类:是没有名字的内部类,是内部类的简化写法。
匿名内部类的两种形式:
(1)利用一个父类,进行声明并创建匿名内部类对象,这个匿名内部类默认就是这个父类的子类型;
(2)利用一个接口,进行声明并创建匿名内部类对象,这个匿名内部类默认就是这个接口的实现类。
综上,内部类的使用情况:
成员内部类:需要重复多次使用时,并且需要外部类的非静态属性和非静态方法;
静态内部类:需要重复多次使用时,并且需要外部类的静态属性和静态方法;
匿名内部类:只需要使用一次;
局部内部类:几乎不会使用。