一、面向对象的几个基本特征:封装性,继承性,多态性
封装性:选择性的对外隐藏内部属性(public, protected, defult, private),内部类。
继承性:子类继承父类(继承了父类的属性和方法)
多态性:
(1)重载:在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同静态(参数的类型、参数的顺序、参数的个数)确定其相应的方法。注意,单单返回类型不一样是不能作为重载的。
(2)重写:子类对父类的方法重写。 (返回类型,参数的类型、参数的顺序、参数的个数必须一样,只有方法体可以不一样。)
二、类
- 类的声明:
[public | default] [abstract | final] ClassName extends(SuperClassName) implements 接口1,接口2...... - 类的成员属性:
访问权限关键字([public | protected | defult | private] [static] [final])
类型
标识符 - 类的成员方法:
([public|protected| defult|private] [static] [final] [返回类型] methodName(参数列表)
{
方法体
} - 构造方法:必须与类名同名
public ClassName (参数列表){
this(传入的参数名字与本类的成员属性同名,成员属性被覆盖。所以需要使用this来调用当前对象成员属性)
}
接口是特殊的抽象类,对吗?
四、抽象类和接口
抽象类:用abstract修饰的类。如果这个类里面有抽象方法,那么这个类必须被声明为抽象类。
抽象类和实例类的区别:抽象类里面有抽象方法。抽象类不能被实例化,并且其全部抽象方法必须在子类中重写。接口:【public】 interface 接口名 extends 接口1,接口2.....{
【public】【static】【final】数据类型 变量名 = 常量值;
【public】【abstract】返回类型 方法名 (参数列表);
“【】”表示我们自己不写,系统帮我们直接写上去的关键字。
}
接口里可以有静态方法,可以有default方法(就是实例方法:就是在这个接口的实现类里面,可以创建对象之后,直接调用这个方法),可以有抽象方法。抽象类和接口的区别:(1)接口可以有属性(但是只能是常量)。
(2)一个类可以实现多个接口,一个接口可以继承多个接口,一个类只能继承一个类。
五、this 和 super
- this()和super(),只用于构造方法的方法体的第一行.
2.this.和super.
六、内部类
七、两对冲突的关键字:
- abstract和final在类声明时是不能同时出现的(因为final的意思就是这个类不能被继承,而abstract表示这个类是抽象类,必须被其子类实现它的抽象方法)
2.abstract和static在方法的声明时是不能同时出现的(因为abstract方法是没有方法体的,它不可能被类直接调用。)