跳转至

面向对象

面向对象编程:OOP(Object Oriented Programming)

面向对象的三大特征:

1、封装

类里面有属性、方法。

2、继承

可以使用之前写的代码。

3、多态

可以扩展,使用后来人写的代码。

面向抽象类编程:抽象类,虚函数,抽象函数。

实现多态的3个条件:

  1. 要有继承
  2. 要有虚函数重写
  3. 父类引用,父类指针指向子类对象。

多态的意义

多态可扩展机制比复用好的多。复用是别人已经写好的方法 继承。

框架函数。不用改变。改变的是实现。

框架已经提前写好了,实现是后来人写的,框架可以使用后来人写的代码。这就是可扩展。

C++多态 C语言指针,通过地址形参可以改变实参的值。

多态

同一种行为,不同的子类呈现出来的状态是不同的。

多态跟属性无关,多态指的是方法的多态。

例:

使用一个动物基类,基类定义一个叫的方法。

猫实现的是喵喵叫、狗实现的是汪汪叫。子类对父类的方法重写。

调用的时候传的是动物基类,定义的时候只需要使用具体的动物类(调用猫是喵喵、调用狗是汪汪)。父类调用子类重写的方法。

接口

定义接口,可以调用不同的实现类。也可以实现多态。

继承:子类对父类的继承,提高代码的复用性。“is-a”的关系。

接口:实现类对接口的实现,实现规则。“has-a”的关系。

  • 类是类,接口是接口。两个不一样的东西。
  • 接口:用interface来表示。定义规则。 实现类:实现接口,实现规则。
  • 在JDK1.8之前,接口中的内容:常量、抽象方法。
  • 实现类实现接口,利用implements关键字
  • 实现类实现接口后,重写接口中定义的抽象方法。
  • 接口不能创建对象,需要用接口指向实现类的形式创建对象。(多态的形式

变量:在内存中开辟内存空间,值可以改。

常量:值不可以改。

有了接口,代码规范性更强。

创建interface文件,定义规则。

public interface Speak {//接口
    /*
    常量:
    它的数值不能改变,一旦给定了值以后就不能更改。
    接口中的常量前面的修饰符:public static final
    如果在接口中,可以省略public static final
    一般定义常量的时候,名字全部大写
     */
    /*public static final */int AGE = 18;

    /*
    抽象方法
    在接口中,public abstract可以省略
     */
    /*public abstract */void say();
}

实现类,实现规则

//实现类1:
public class Chinese implements Speak {//实现类实现了接口,实现具体的规则
    //重写
    @Override
    public void say() {
        System.out.println("你好,干嘛去~~~");
    }
}
//实现类2:
public class American implements Speak {
    @Override
    public void say() {
        System.out.println("hi.. hello..");
    }
}
public class Test {
    public static void main(String[] args) {
        //接口不能创建对象
//        Speak s = new Speak();

        //实现类可以创建对象 
        Chinese ch = new Chinese();
        System.out.println(ch.AGE);//访问常量
        ch.say();//调用方法

        American a = new American();
        System.out.println(a.AGE);
        a.say();

        //通过接口实现多态
        //接口=实现类
        Speak s = new Chinese();
        System.out.println(s.AGE);
        s.say();//表面上调用的是接口的say方法,实际上进入到了实现类的say方法
    }
}

面向接口编程,公司里面定义规则,不同的人对接口有不同的实现。