java基础(多态、抽象类、封装、接口)

一、多态
特点:同一个事件发生在不同的对象上会产生不同的结果
多态存在的三个必要条件
1、继承
2、重写
3、父类引用指向子类对象:Parent p = new Child();
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理

实现方式:
1、重写
2、接口
3、抽象类和抽象方法

二、抽象类、抽象方法
1、 抽象类不能被实例化(抽象类自己可以有已经实现的方法)
2、抽象方法只包含一个方法名,而没有方法体
3、如果一个类包含抽象方法,那么该类必须是抽象类。
4、构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法
5、任何子类必须重写父类的抽象方法,或者声明自身为抽象类

public abstract class Employee
{
   private String name;
   private String address;
   private int number;
   
   public abstract double computePay();
   
}

三、封装
1. 修改属性的可见性来限制对属性的访问(一般限制为private)
2. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问

public class Person{
    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;
    }
}

 四、接口

1、接口和类的区别:
  (1)接口不能用于实例化对象。
  (2)接口没有构造方法。
  (3)接口中所有的方法必须是抽象方法。
  (4)接口只能包含 static 和 final 的成员变量。
  (5)接口不是被类继承了,而是要被类实现
  (6)接口支持多继承

2、抽象类和接口的区别:
  (1)一个类只能继承一个抽象类,而一个类却可以实现多个接口
  (2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。

3、特性:
  (1)接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
  (2)接口中的方法也是隐式抽象的, 会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)
          JDK 1.8 以后,接口允许包含具体实现的方法,该方法称为"默认方法",默认方法使用 default 关键字修饰
          JDK 1.9 以后,允许将方法定义为 private,使得某些复用的代码不会把方法暴露出去
  (3)接口中的变量也是隐式抽象的, 会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)

4、接口的实现
  必须实现接口内所描述的所有方法,否则就必须声明为抽象类

/* 文件名 : Animal.java */
interface Animal {
   public void eat();
   public void travel();
}

/* 文件名 : MammalInt.java */
public class MammalInt implements Animal{
 
   public void eat(){
      System.out.println("Mammal eats");
   }
 
   public void travel(){
      System.out.println("Mammal travels");
   } 
 
   public static void main(String args[]){
      MammalInt m = new MammalInt();
      m.eat();
      m.travel();
   }
}

5、接口的多继承

public interface Hockey extends Sports, Event

6、标记接口
  没有任何方法的接口被称为标记接口。标记接口主要用于以下两种目的:
  (1)建立一个公共的父接口:
正如EventListener接口,这是由几十个其他接口扩展的Java API,你可以使用一个标记接口来建立一组接口的父接口
例如:当一个接口继承了EventListener接口,Java虚拟机(JVM)就知道该接口将要被用于一个事件的代理方案。
  (2)向一个类添加数据类型:
这种情况是标记接口最初的目的,实现标记接口的类不需要定义任何接口方法(因为标记接口根本就没有方法),
但是该类通过多态性变成一个接口类型

package java.util;
public interface EventListener
{}
测试进阶轨迹
原文地址:https://www.cnblogs.com/yinwenbin/p/14812249.html