从零开始学java - 第十二天

138 阅读2分钟

这是我参与11月更文挑战的第12天,活动详情查看:2021最后一次更文挑战

今天继续~

多态

  • 多个同名方法因不同的实例而执行不同的功能,如父类下的三个子类拥有相同的方法,这三个子类的方法名字相同,功能却是可以变化的
class Father(){
    void speak(){}
}
class Son extends Father(){
    void speak(){
        System.out.println("Son");
    }
}
class Son1 extends Father(){
    void speak(){
        System.out.println("Son1");
    }
}
class Son2 extends Father(){
    void speak(){
        System.out.println("Son2");
    }
}

ps:父类中必须有该方法

虚函数

  • 虚函数的存在就是为了多态,有些情况必须要加上虚函数才能实现多态
  • java的普通函数(没有被声明static,native的关键字的)就是虚函数,因为它们能实现多态功能

抽象类

  • 抽象类中不能有对象(不能new)
  • 抽象类的方法中不能有方法体
  • 抽象类的方法就是为了子类中的重写而准备的

封装

  • 减少耦合度
  • 隐藏信息,实现细节
public class Father(){
    private String name;
    private int age;
    public int getAge(){
        return age;
    }
    public String getName(){
        return name;
    }
    public void setAge(int age){
        this.age = age;
    }
    public void setName(String name){
        this.name = name;
    }
}

ps:用this来区分局部变量与全局变量

接口

  • 接口是抽象方法的集合
  • 一个接口必须实现其中的所有方法,否则就必须是抽象类

接口与类的相似点

  • 一个接口可以有多个方法

接口与类的区别

  • 接口不能实例化对象
  • 接口没有构造方法
  • 接口的所有方法必须是抽象方法
  • 接口不能包含除了static和final的成员变量
  • 接口支持多继承

接口特性

  • 接口中的方法都会被定义为public abstract
  • 接口中的变量会被定义为public static final

抽象类与接口的区别

  • 接口的方法中不能存在方法体
  • 接口中不能含有静态代码块和静态方法
  • 一个类只能继承一个抽象类,但可以实现多个接口

接口的实现

interface Mouth{
    public void eat();
    public void drink();
}
public class Person implements Mouth{
    public void eat(){
        System.out.println("eat");
    }
    public void drink(){
        System.out.println("drink");
    }
}

ps:如果实现接口的类是抽象类,那么就没有必要实现接口的所有方法

接口的继承

public interface Father{
    public void setName(String name);
    public void setAge(int age);
}
public interface Son extends Father{
    public void setChildrenName(String name);
    public void setChilrenAge(int age);
}
  • 在Father接口中拥有两个方法,在Son接口中拥有四个方法

接口的多继承

public interface Son extends Father1,Father2

标记接口

  • 向类添加一个数据类型,标记接口没有方法,仅为类的多态做扩充
  • 建立一个公共接口 今天就学到这里吧,晚安~