【Thank & Discuss】OOP(Object-oriented Programming)

一、面向对象的几个基本特征:封装性,继承性,多态性

  1. 封装性:选择性的对外隐藏内部属性(public, protected, defult, private),内部类。

  2. 继承性:子类继承父类(继承了父类的属性和方法)

  3. 多态性:
    (1)重载:在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同静态(参数的类型、参数的顺序、参数的个数)确定其相应的方法。注意,单单返回类型不一样是不能作为重载的。
    (2)重写:子类对父类的方法重写。 (返回类型,参数的类型、参数的顺序、参数的个数必须一样,只有方法体可以不一样。)

二、类

  1. 类的声明:
    [public | default] [abstract | final] ClassName extends(SuperClassName) implements 接口1,接口2......
  2. 类的成员属性:
    访问权限关键字([public | protected | defult | private] [static] [final])
    类型
    标识符
  3. 类的成员方法:
    ([public|protected| defult|private] [static] [final] [返回类型] methodName(参数列表)
    {
    方法体
    }
  4. 构造方法:必须与类名同名
    public ClassName (参数列表){
    this(传入的参数名字与本类的成员属性同名,成员属性被覆盖。所以需要使用this来调用当前对象成员属性)
    }

接口是特殊的抽象类,对吗?

四、抽象类和接口

  1. 抽象类:用abstract修饰的类。如果这个类里面有抽象方法,那么这个类必须被声明为抽象类。
    抽象类和实例类的区别:抽象类里面有抽象方法。抽象类不能被实例化,并且其全部抽象方法必须在子类中重写。

  2. 接口:【public】 interface 接口名 extends 接口1,接口2.....{
    【public】【static】【final】数据类型 变量名 = 常量值;
    【public】【abstract】返回类型 方法名 (参数列表);
    “【】”表示我们自己不写,系统帮我们直接写上去的关键字。
    }
    接口里可以有静态方法,可以有default方法(就是实例方法:就是在这个接口的实现类里面,可以创建对象之后,直接调用这个方法),可以有抽象方法。

  3. 抽象类和接口的区别:(1)接口可以有属性(但是只能是常量)。
    (2)一个类可以实现多个接口,一个接口可以继承多个接口,一个类只能继承一个类。

五、this 和 super

  1. this()和super(),只用于构造方法的方法体的第一行.

2.this.和super.

六、内部类

七、两对冲突的关键字:

  1. abstract和final在类声明时是不能同时出现的(因为final的意思就是这个类不能被继承,而abstract表示这个类是抽象类,必须被其子类实现它的抽象方法)

2.abstract和static在方法的声明时是不能同时出现的(因为abstract方法是没有方法体的,它不可能被类直接调用。)

你可能感兴趣的:(【Thank & Discuss】OOP(Object-oriented Programming))