• Java自学课程笔记4


    2021年2月8日22点08分
    JAVA自学课程笔记4:
        
        接口(interface)
            抽象方法和常量值的集合。本质上是一种特殊的抽象类。
            格式:
                (public) interface InterfaceName (extends SuperInterfaceList){
                    //常量定义和方法定义
                }
    
            接口可以继承多个父接口(extends A,B),而类不可以。
            接口中的变量类型都是省略了前缀的public final和public abstract型变量。
            如果实现接口后重写变量,必须声明public。
            类可以实现(implements)接口。但如果只实现了部分,则该类必须声明为抽象类。
                interface It{
                    public static final int i = 20;
                    public abstract void f();
                }
    
                interface It2{
                    int i = 20;
                    void f();
                }
    
                class A implements It2{
                    public void f(){
                        System.out.printf("%d
    ",i);
                    }
                }
    
                public class Test1{
                    public static void main(String[] args){
                        A aa = new A();
                        aa.f();
                    }
                }
            //输出结果:
                20
    
            接口实现(implements)多态,不可以new接口对象,但可以定义一个接口引用类型的变量(接口变量)去指向实现接口的那个对象(类变量)。
                interface It{
                    int i = 20;
                    void f();
                }
    
                class A implements It{
                    public void f(){
                        System.out.println("AAAA");
                    }
                }
    
                public class Test2{
                    public static void main(String[] args){
                        //It it2 = new It();        //error
                        It it;
                        it = new A();            //OK    即It it = new A();
                        it.f();
                    }
                }
            //输出结果:
                AAAA
    
            实现(implements)接口只能调用从父接口实现过来的成员,不能调用子类所特有的。(JAVA自学课程笔记3第20行继承的关系)
                interface It{
                    int i = 20;
                    void f();
                }
    
                class A implements It{
                    public void f(){
                        System.out.println("AAAA");
                    }
                    public void g(){
                    }
                }
    
                public class Test3{
                    public static void main(String[] args){
                        //It it2 = new It();        //error
                        It it;
                        it = new A();            //OK
                        it.f();
                        it.g();                //error
                    }
                }
    
        包(package)
            package语句必须是第一条。
    
            package aa.bb表示:把该文件中的所有的类放入aa.bb这个包中,并且该文件中所有类的真正名字将是包名和类名的组合。(例如:aa.bb.Test4)。
    
            编译时使用javac -d.Test4.java而尽量不使用javac Test4.java,后者需要手动创建目录。(-d后的'.'是说明当前目录。)
            (查找包和设置classpath见笔记1第3行。)
    
            不同的包中的类若想跨包相互引用,则必须声明该类为public并且将包名前缀写上。(如aa.bb.A aa = new aa.bb.A();)若想引用该类中的成员,则成员也必须声明为public。
            如果想跨.java的源代码引用不同的类,可以在同目录编译完成的情况下直接new,当作写在同一个源代码.java文件当中。
    
            导入(import)
                将一个包内的所有类导入:import aa.bb.*;
                将一个类导入:import aa.bb.Test5;
                导入包后,若跨包引用类,原始类必须声明为public。若跨包使用类若跨包引用成员,原始成员必须声明为public。
            内部类
                只有内部类可以用protected和private修饰。外部类只能是public和非public(即不声明default)。
                    class A{
                        protected class B{
                        }
                    }
            归档工具jar包
                将多个文件或目录合并压缩为单个Java归档文件。用于发布和使用类库,便于资源的组合和管理。
                jar -cvf Name.jar *    //把当前路径下所有的文件及文件夹下的所有内容(*)打包。
                jar -tf Name.jar    //在DOS下显示Name.jar这个包解压后的文件内容。
                jar -xf D:XXName.jar    //把D:XXName.jar中的内容解压到当前目录下。
  • 相关阅读:
    2017ecjtu-summer training #4 CodeForces 731C
    HDU 1232 并查集
    2017ecjtu-summer training #3 POJ3264
    2017ecjtu-summer training #4 UESTC 30
    斑羚飞渡 贪心
    Codeforces Round #565 (Div. 3) D. Recover it!
    P3398 仓鼠找sugar lca
    P3146 [USACO16OPEN]248 dp
    P1955 [NOI2015]程序自动分析 离散化
    P2949 [USACO09OPEN]工作调度Work Scheduling 贪心
  • 原文地址:https://www.cnblogs.com/yinjx/p/14647886.html
Copyright © 2020-2023  润新知