栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

接口,抽象类与接口的区别,内部类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

接口,抽象类与接口的区别,内部类

1.我们使用interface关键字定义接口

2.我们使用implments关键字建立接口实现类与接口的实现关系

接口是父级,接口实现类是子级

3.接口实现类如果实现部分/不实现接口中的抽象方法,那么实现类是一个抽象类接口实现类,如果实现了接口所有的抽象方法,那么这个实现类是一个普通类

4.抽象类与接口都不可以实例化/创建对象

5.接口没有构造函数,实现类使用的super()是父类的无参构造

如果没有明确指定父类,super()代表的才是Object的无参构造

6.接口中都是静态常量,没有成员变量,因为会默认拼接public  static final

故此:静态常量与抽象方法默认拼接的部分,可以省略不写

8.接口不是类

9.接口是用来指定规则的【有哪些功能?方法有参数吗?有返回值吗?】

方法具体的实现交给接口的实现类去完成

总结:

1.类与类的关系

继承关系,只支持单继承。

2.类与接口的关系:

实现关系,可以单实现,也可以多实现

class A implements inter1{}

class A implements inter1,inter2....{}

3.接口与接口的关系:

继承关系,可以单继承,也可以多继承

注意:如果创建接口实现类的话,inter3Impl只需要实现接口3与接口1的抽象方法

inter4impl不仅需要

实现接口4,还需要实现接口4继承自接口1与接口2的所有功能

package cn.tedu.inter2;
 
public class TestRelation {
    public static void main(String[] args) {

    }
}
interface Inter1{
    void save();
    void delete();
}
interface Inter2{
    void update();
    void find();
}
//接口可以继承接口,而且还可以多继承,一个子接口继承多个父接口,多个接口之间使用逗号分隔。
interface Inter3 extends Inter1,Inter2{

}
//implements inter3  实现类与接口是实现的关系,并且实现类可以实现多个接口,接口之间用逗号隔开。
// 对于Java中的类而言,遵循:单继承,多实现的规则。
// 对于Java中的接口而言,遵循:既可以单继承,也可以多继承的规则
class inter3Iml  implements  Inter1, Inter2{

    @Override
    public void save() {
        System.out.println("稍等...正在努力保存中");
    }

    @Override
    public void delete() {
        System.out.println("小二正在马不停蹄的删除中");
    }

    @Override
    public void update() {
        System.out.println("客官,马上就更新好啦");
    }

    @Override
    public void find() {
        System.out.println("正在为您查询,请稍后...");
    }
}

 

 抽象类与接口的关系:

1.抽象类使用class关键字定义,是类

接口使用interface关键字定义,是接口

2.抽象类里可以定义成员变量

接口里没有成员变量,有的是静态变量,默认会拼接public static final

3.抽象类类里的方法不做限制:全普,全抽,半普半抽

接口中的方法都是抽象方法,默认会拼接:public abstract

4.抽象类与接口均不可以实例化/创建对象

5.抽象类里有构造方法,不是为了自己使用,而是为了子类创建对象时调用,接口里没有构造方法,接口实现类调用的构造是父类的构造的方法,与接口无关

6.接口可以多继承,也就是说,一个接口可以继承一个接口/多个接口

抽象类只能单继承,也就是说,一个子类只能有一个父类

7.抽象是后天重构的结构,接口是先天设计的结果。

内部类特点:

1) 内部类可以直接访问外部类中的成员,包括私有成员

2) 外部类要访问内部类的成员,必须要建立内部类的对象

3) 在成员位置的内部类是成员内部类

4) 在局部位置的内部类是局部内部类

 

 

package cn.tedu.cn.tedu.innerclass;

public class TestInner1 {
    public static void main(String[] args) {
         
        Outer.Inner oi=new Outer().new Inner();
        oi.delete();
        System.out.println(oi.sum);
        new Outer().find();
    }
}
class Outer{
    //创建外部类的成员变量
    String name;
    private int age;
    //创建外部类的成员方法
    public void find(){
        System.out.println("Outer...find()");
        
//        System.out.println(sum); 报错
//        delete();
        
        Inner in=new Inner();
        System.out.println(in.sum);
//        in.delete();
    }

    
    class Inner{
        int sum=10;
        public  void  delete(){
            System.out.println("Inner...delete()");
            
            System.out.println(name);
            System.out.println(age);
            find();
        }
    }
}

Inner...delete()
null
0
Outer...find()
10
10
Outer...find()
10

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/333035.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号