--1,概述 接口和类之间可以多实现 接口和接口之间可以多继承
--2,代码 package cn.tedu.oop; 接口的复杂用法
总结 : 1, 接口是为了 突破java的单继承的局限性而来 2, 接口很灵活,可以多继承也可以多实现 3, 实现类 可以 在继承父类的同时 ,进行多实现
public class C9 {
public static void main(String[] args) {
//TODO 多态对象 --统一标准,,,,标准就是左边 -- 想用哪个接口的功能左面就写谁
Inter1 in = new Inter3Impl();
in.save();
// in.delete();
}
}
//TODO 接口和类之间可以实现 ,还可以多实现, 接口间逗号隔开
class InterImpl2 extends Object implements Inter1 , Inter2{
@Override
public void save() { }
@Override
public void delete() { }
}
//TODO 接口和接口之间可以多继承
interface Inter1{
void save();
}
interface Inter2{
void delete();
}
//1, 3号接口 成功的 使用了1号接口的功能 -- 发生的是继承关系
//2, 接口间可以继承,也可以多继承 , 多个接口间逗号隔开
interface Inter3 extends Inter1 , Inter2{ }
//3, 实现了3号接口的 实现类 , 要重写 所有 抽象方法,否则就是一个抽象的实现类
//abstract class Inter3Impl implements Inter3{ }
class Inter3Impl implements Inter3{
@Override
public void save() { System.out.println("save"); }
@Override
public void delete() { System.out.println("delete"); }
}
===============================================================
重写接口方法的权限问题 package cn.tedu.oop; //测试 重写接口里的 抽象方法 public class Test5 { public static void main(String[] args) { //TODO 测试 } } //1, 创建接口 interface A{ //这是简写,会自动拼接public abstract void save(); void get(); } //TODO 2, 使用接口 class B implements A{ //接口里的方法想要重写,要有足够权限,接口里都是public的方法 //所以在重写时,要保持修饰符的权限>=原有的 @Override public void save() { System.out.println("save"); } @Override public void get() { System.out.println("get"); } }
总结
--1,类和类之间的关系
--继承关系,而且是单继承
--class A extends B
--A叫子类,B叫父类
--A可以使用B的所有功能(除了私有),还可以使用自己的扩展功能
--A还可以改 B的功能,叫方法重写现象
--重写的要求:发生继承关系 + 有足够的权限 + 方法声明和父类一样
--这种继承关系,是一种强耦合的关系,依赖性太强.
--2,类和接口之间的关系
--实现关系,而且可以多实现
--class A implements B,C
--A叫实现类, B和C叫接口逗号隔开
--A可以同时拥有B和C接口的所有功能.
--A需要重写所有 B C 里的抽象方法,否则就是一个抽象类
--体现了接口的灵活性,扩展性.
--class A extends B implements C,D
--A叫子类或者叫实现类 ,B是父类,C和D是接口
--A要重写B C D里的抽象方法,否则就是一个抽象类
--对于普通方法是不是需要重写,怎么决定? -- 想不想改
--要先继承再实现
--3,接口和接口之间的关系
--继承关系,而且可以多继承
--interface A extends B,C
--A叫子接口,B和C叫父接口
--A可以使用B和C接口的所有功能,还可以有自己的扩展功能
--class X implements A
--X需要重写A B C 里的所有抽象方法,否则就是为一个抽象类
--4,接口和抽象类的区别
--相同点:都是java层次结构的上层 + 都不能被实例化
--定义的关键字不同,抽象类是abstract接口是interface
--下层发生的关系不同:
--实现类和接口是implements实现关系,子类和父类是extends关系
--抽象类是一个特殊的类,特殊在可以有抽象方法和普通方法
--接口是一个特殊的抽象类,特殊在接口里 都是抽象方法
--抽象类有构造方法,用来给子类new时调用....接口没有构造方法,实现 类new时调用Object的无参构造
--抽象类里有变量有常量.接口里只有常量.
--抽象类里的方法可以是普通的也可以是抽象的...接口里都是抽象的
--接口里的资源可以简写:
--接口里的常量,可以简写,会自动拼接public static final
--接口里的方法,可以间写,会自动拼接public abstract
--接口和实现类是实现关系,,而且可以多实现
--抽象类和子类是继承关系,,而且是单继承
原文:https://www.cnblogs.com/liang-shi/p/13843988.html