java 抽象类 接口 多态

来源:互联网 发布:淘宝同款插件 编辑:程序博客网 时间:2024/06/15 04:20

java 抽象类 接口 多态

java 继承和多态
子类重写父类的实例方式,产生自己的功能行为,当把创建的子类对象的引用赋给父类对象,然后该父类对象(上转型对象)调用这个实例方法时就可能具有多种形态

java 接口和多态
java 舍弃c++的多重继承机制,使用单继承,即一个类只能有一个父类,易于管理和维护,
java 使用接口,一个类可以实现多个接口,实现多态:
不同的类在实现同一个接口时可能具有不同的实现,那么当接口变量在回调类实现的接口方法时就具有了多种形态

面向抽象编程:
指当设计某种重要的类时,不让该类面向具体的类,而是面向抽象类,即所设计类中重要数据是抽象类声明的对象,而不是具体类声明的对象。

面向接口编程:
核心思想—接口回调,即接口变量存放实现该接口的类的对象的引用,通过接口变量就可以回调类实现的接口方法。
//1、接口
public interface MyInterface{
public void test();
}
//2、实现接口的类
class MyClass implements MyInterface{
@Override
public void test() {
System.out.println(“reinvoke”);
}
}
public class Test {
public static void main(String[] args){
MyInterface mytest = new MyClass(); //3、接口变量存放实现该接口类的对象的引用
mytest.test(); //4、通过接口变量回调类实现的接口方法
}
}

两种定义抽象方式:抽象类、接口

抽象类、接口的区别

1、语法层面上的区别
a、抽象类可以提供成员方法的实现细节,
接口中只能存在public abstract类型的方法,且不能有具体的实现方法。
b、抽象类中的成员变量可以是各种类型的,
接口中的成员变量只能是public static final类型的,必须给其初值,实现类中不能重新定义,也不能改变其值
c、抽象类可以有静态代码块和静态方法,
接口中不能含有静态代码块以及静态方法
d、一个类只能继承一个抽象类(继承关系),而一个类却可以实现多个接口,抽象类可以定义构造函数,接口则不能

2、设计层面上的区别(设计理念)
抽象类
是”is-a”关系,是对一种事物的抽象,即对类抽象,抽象类是对整个类整体进行抽象,包括属性、行为。
它作为很多子类的父类,是一种模板式设计
接口
是”like-a”关系,是对行为的抽象。即对类局部(行为)进行抽象
它是一种行为规范,是一种辐射式设计

类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),
对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,
对不是同一包中的没有父子关系的类相当于私有
这里写图片描述

原创粉丝点击