1、封装
封装指的是将描述一个对象的属性和行为封装到一个模块里,Java中称为类。属性用变量定义,行为用方法表示,方法可以访问修改同一个对象中的属性。
2、抽象
抽象指的是将现实世界的实际存在或逻辑抽象为一个类,要实现数据抽象和过程抽象。如汽车类,要在类中定义汽车的品牌,颜色等属性,以及跑、加油等方法。在Java中具体的语法又有抽象类和接口。
1)抽象类
- 包含有抽象方法的类为抽象类,必须用abstract修饰
- 抽象方法不含有方法体,即具体的实现
- 继承抽象类的子类必须实现父类的所有抽象方法
- 抽象类中可以有非抽象方法
2)接口
Java中不能多继承,只能继承一个类,但却可以实现多个接口。在Java编程时常常用实现接口的方式表征类具有的特性。
- 接口中的方法都是抽象方法,都默认为public abstract
- 接口中的方法不能有具体实现,只能由实现接口的子类实现,或者用static修饰。
3、继承
继承指的是子类继承父类,继承的特性有:
- Java中为单继承,即一个类只能继承一个父类
- Java可以多重继承,即A继承B,B继承C
- 子类继承父类的所有非private属性和方法,并且可以修改(重写)父类的方法,也可以拓展自己的属性和方法
4、多态
多态指的是一种行为有多种不同的表现形式。
多态存在的必要条件
- 继承
- 重写
重写和重载都是Java多态的一种表现形式
重写: 子类对父类方法逻辑的重新编写,参数形式和返回值都不能变化
重载: 在同一个类中方法名相同,参数列表不同的方法称为重载。返回值也可以变化,在调用时根据给定的参数进行方法的区分。常见的一个类中几个不同的构造器就是重载 - 用父类声明创建子类对象(父类引用指向子类实例)
如Father father = new Son()
方法的执行过程
代码示例
public class Father {
public void eat() {
System.out.println("father eat");
}
}
public class Son extends Father{
@Override
public void eat() {
System.out.println("son eat");
}
public static void main(String[] args) {
Father people = new Son();
people.eat();
}
}
首先编写一个Father父类,有一个eat方法,再编写Son类继承Father类重写eat方法,在main方法中父类声明子类对象Father people = new Son()
,再调用eat方法。
方法的执行过程为: 先在Father类中寻找eat方法,若没找到则抛出异常,找到了再去找子类的eat方法,若子类重写了eat方法则运行子类的方法,否则运行Father类的方法。如图,运行结果为son eat