JavaSE复习日记 : 接口

/*
 *                              接口
 *      引用数据类型:
 *          类,接口,数组;
 *
 *      接口是一种引用数据类型,可以看作是一个特殊的类,它存在的目的是为了解决没有多重继承引起的功能弱的问题而设计的,一个类只能有一个父类,但是这个类却可以实现多个接口;
 *
 *      接口还可以看作是只有抽象方法的类,即接口的所有方法都必须被实现;
 *      接口声明的关键字是interface,代替了class;而普通类的继承关键字extends也变成了implements(实现);
 *      但是其作用和普通类中是一样的,只不过是为了区分而已;
 *
 *
 *      1 定义接口的语法:
 *          [修饰符列表] interface 接口名 { }
 *      2 接口中的内容:
 *          只能是常量(public static final 常量名)和抽象方法
 *      3 抽象方法不需要abstract修饰,默认就是public的(不需要加)
 *      4 接口可以看作是一个特殊的抽象类,就是完全抽象的,没有普通的方法
 *      5 接口中是没有构造方法的,也就是接口无法被实例化
 *      6 一个类可以实现多个接口,但是只能继承一个类
 *      7 一个非抽象类实现接口,需要将接口中所有的方法都实现(重写/覆盖)
 *          那抽象类实现接口呢?
 *          抽象类实现接口,可以实现任意个:0~N个
 *      8 接口之间:
 *          可以继承,不仅如此,接口还可以多继承,相比来说,类只能单继承
 *
 *      常量和静态数据的区别:
 *          都是在类加载的时候就初始化,但是静态数据可以进行多次赋值
 *
 *      常量:一般都必须使用public static final修饰,在接口中声明常量,这些都是可以省略的;
 *      命名方式:大写字母加下划线的形式命名;
 *
 *      注意: 上述部分需要区分接口和接口间的"继承",类和接口间的"实现",类和类的"继承";
 */

public class JavaSE{
    public static void main(String[] args){
        F f = new F();
        f.m1();
        f.m2();
        f.m3();
        f.m4();
    }
}

interface A{//接口A
    public void m1();
}

interface B{//接口B
    public void m2();
}

interface C{//接口C
    void m3();//接口中方法的public是可以省略的;
}

interface D extends A,B,C{//接口的多继承
    void m4();
}

class MyClass implements B,C{//普通类对接口的实现
    public void m2(){
        System.out.println( "覆写B接口的m2()方法" );
    }
    public void m3(){
        System.out.println( "覆写C接口的m3()方法" );
    }
}

abstract class E implements D{//抽象类对接口的实现
    public static final int A = 10;//常量的声明方式
    char C = ‘中‘;
    public void m1(){

    }
    public void m2(){

    }
    public void m3(){

    }
    public void m4(){

    }
}

class F extends E{//需要覆写E中所有的方法
    public void m1(){
        System.out.println( "覆写m1()方法" );
    }
    public void m2(){
        System.out.println( "覆写m2()方法" );
    }
    public void m3(){
        System.out.println( "覆写m3()方法" );
    }
    public void m4(){
        System.out.println( "覆写D中的m4()方法" );
    }
}
时间: 2024-12-22 21:31:19

JavaSE复习日记 : 接口的相关文章

JavaSE复习日记 : Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符

// Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符 /* * 一 Java操作符 * * Java操作符都有哪些? * +, -, *, /, %, ++, -- * 这里需要注意 a++ 和 ++a 的区别,后面说; */ /* public class Javase{ public static void main(String[] args){ int a = 10; int b = 20; int c = 30; System.out.println( a

JavaSE复习日记 : java包机制

这里是第一个文件,命名为JavaSE_01.java,我在这个文件里面声明了一个m1()方法,通过包机制,我将在另外一个文件夹里访问这个文件里的东西,确切的说是访问这个文件生成的一个class文件; package com.jaovo.webTeah.db; /* * Java包机制 * * 也就是软件包机制,软件世界中的两大难题:命名和缓存; * * 在程序命名中取一个言简意赅的名字很难,有时候名字取出来发现这个名字已经存在,包括IP,域名,MAC地址冲突等,在计算机中都出现了命名冲突的问题,

JavaSE复习日记 : 条件判断语句

/* 条件控制语句:if(){}else{} 语法: 第一种结构:有不执行的情况 if(boolean表达式){ //第一位真,就执行里面的语句,为假就不执行 java语句; } 第二种结构: if(boolean表达式){ java语句; }else{ java语句; } 第三种结构:多个条件判别式,有不执行情况 if(boolean表达式){ java语句; }else if(boolean表达式){ java语句; }else if(boolean表达式){ java语句; }else i

JavaSE复习日记 : 抽象类

/* * 抽象类 * 抽象: * 面向对象的三大核心思想; * 封装: 封装,ppp是封装的一部分 * 继承; * 多态: 父类的引用指向子类的对象 * 引用: 是指一个引用型变量 * 有哪些变量? * 成员变量; * 构造方法的局部变量; * 普通方法的局部变量; * 立马声明立马使用的变量; * 静态变量; * 什么是抽象类? * 就是用abstract关键字修饰的类就叫抽象类; * 什么是抽象方法? * 没有方法体的方法叫抽象方法,连{}都没有;抽象方法必须在修饰符列表中加上abstrac

JavaSE复习日记 : 继承关系和super关键字

/* * 类的继承和super关键字 * * 软件开发的三大目的: * 可拓展性; * 可维护性; * 可重用性; * * 这里单说下可重用性这一项: * 为了代码复用,复用方式有: * 函数的调用复用; * 类的实例化复用,类直接的复用; * 类的继承复用; * 前两个我都有发过,这里就说一下类的继承,以及继承中用的较多的关键字:super; * * * 首先要先了解什么是继承? * 继承,用人认知的角度说的话就好比一个父亲的东西由他的几个儿子来继承,也就是有了父亲的东西,同时也有自己的东西-

JavaSE复习日记 : 八种基本数据类型

/* * 基本数据类型 * * Java里的8种基本数据类型: * byte --- 1 byte = 8 bit; * short --- 2 byte = 16 bit; * int --- 4 byte = 32 bit; * long --- 8 byte = 64 bit; * * float --- 浮点型,32位的空间,数据表示形式是小数(如:3.0) * double --- 浮点型,64位的空间,数据表示形式是小数 * char --- 字符型,char型数据占用两个字节 2

JavaSE复习日记 : 多态

/** * 里氏替换原则 : * 能使用父类的地方,一定可以使用子类 * 什么是多态 : * 父类的引用,指向子类的对象 * 多态的前提条件 : * 有继承关系的两个类 * 多态的目的 : * ☆☆☆ 代码的重用 * 多态发什么在什么时候 : * 赋值的时候 * * !!!!!!!!! 多态中的 ☆☆☆ 覆写 是特指的 成员方法!!!!!!!!! * 什么是覆写 : * 就是在子类有个和父类相同的方法 : 方法名 , 参数列表 , 返回值类型 (和修饰符列表没关系) * 1 方法名相同 : 不相

javaSE复习之——线程

线程其实就是程序执行的一条路径,一个进程中可以包含多条线程,多线程并发执行可以提高程序效率,可以同使完成多项任务 多线程的应用场景 迅雷多线程一起下载 服务器同时处理多个客户请求 多线程原理(单核CPU) 在电脑上运行多个程序时,其实cpu一次只能做一个事,做一段时间后然后换另一个另一个做一段时间,只是cpu的速度太快了,看起来就是同时做很多事,也就是说多线程其实只是表面上的多线程,底层cpu还是一次只能做一个事,但是这有个前提,那就是那个cpu是单核cpu,如果事多核cpu,那么就可以真正的达

JAVASE复习

top 暑假每天中午更新 六花酱赛高 目录: 内部类 枚举类 垃圾回收 修饰符 与运行环境交互 内部类: 1. 外部类可以通过非静态内部类对象访问内部类的private属性,内部类可以直接访问外部类的private属性,说明外部类和内部类都是在“一个类中”,这样才能相互访问到对方的private属性 2. 非静态内部类的实例化:new Outer().new Inner();//这个很好理解,Inner需要用outer对象来实例化,Inner的命名空间是Outer 3. 静态内部类的实例化: n