面向对象基本知识点
1、String 声明的是一个地址,当你改变它的值时,不是重新给它赋值,而是重新申请了一个地址。也就说:你是申请另外一个变量。
String 是不可以变的字符串. StringBuffer 是可变的字符串.
字符串相加是先相加再开空间。
2、super 与 this 是有区别的:
this可以用来代表“当前对象”,可用 return 返回。而对于super而言,没有 return super;这样的语句。
super 主要是为了:在子类中访问父类中的属性 或者 在子类中 调用父类中的方法 而引入的一个关键字。
3、封装:
1、使变量私有,防止任何人直接进行修改、读取,防止不安全的值,控制访问者权限
2、提供get和set方法
4、使用this调用的构造函数:
1、必须写在构造函数
2、必须写在第一行
5、ArrayList底层实现是数组,线程不安全,效率高,所以查询快,修改、插入和删除慢
LinkedList底层实现是链表,线程不安全,效率高,所以查询慢,修改,插入和删除快
Vector底层也是数组实现的,线程安全,效率低
6、在父类中不确定业务的具体实现的时候,而且所有具体业务都会有此方法,就用抽象方法。
抽象方法没有方法体。
抽象类定义:普通方法加上abstract修饰class,则此类为抽象类。
如果一个类中,只有一个抽象方法,这个类一定是抽象类。
抽象类一定是父类,抽象类不能被实例化(new 类名())。
如果一个类继承了抽象类,则必须实现父类的抽象方法,或者也自己定义为一个抽象类。
7、在变量前用final修饰,表示常量,实例变量可以在构造函数中赋值,类变量(静态变量)只能在创建时初始化。
在定义方法和类时,final与abstract不能同时使用
The class AbstractClass can be either abstract or final, not both
The abstract method skill in type AbstractClass can only set a visibility modifier, one of public or protected
final 单独写在类前面,则该类不能被继承,即没有子类。
final用在方法前面,表示该类不能被重写。
· Cannot override the final method from AbstractClass
final 修饰一个变量,有很多种说法,比如不能改变等等,准确的描述是 当一个变量被final修饰的时候,该变量只有一次赋值的机会
8、重载:在同一个类中,方法名相同,参数列表不同的多个方法,与返回类型和修饰符无关
作用:同一个方法可以做不同的事
9、接口(没有普通属性,构造方法,普通方法,接口中的变量都是静态常量)
只有抽象方法的抽象类,可以用接口来表示。
接口只能包含抽象方法,修饰符为public,abstract,表示同类一系列的动作(方法)
public abstract void run();
void shoot();
默认都是有public abstract。
一个类实现接口,必须重写接口中所有方法(抽象类除外)
接口可以多继承。