当前位置: 首页 > 后端技术 > Java

【Java基础09】类、枚举和接口

时间:2023-04-01 18:02:13 Java

1.包1.1什么是包?主要是分类管理类,类似于文件夹。包构建语法:包公司域名.技术名称,建议所有小写包构建语句必须在第一行1.2可以直接访问与导入包同包下的类,可以直接访问同包下的类通过导入包引用。如果需要导入同一个类,则只能在该类上导入一个包路径。如果需要在类中引用同一个类,需要使用全路径名:包名.类名();格式:导入包名.类名/导入包名.类名2.权限修饰符权限修饰符用于修饰成员访问的范围。权限修饰符可以修饰成员变量、构造函数、方法和内部类。权限修饰符的访问范围如下:同类修饰符,同包其他类,不同包子类,不同包无关类private√default√√protected√√√public√√√√3.final而常量3.1finlfianl表示final的,可以修饰变量、方法、类。修饰变量:这个变量只能赋值一次。修饰方法:该方法是final方法,不能被覆盖。修饰类:该类为final类,不可继承注意:修饰基类:首次赋值后不可更改。修改引用类型:对象引用地址不可更改,但地址对象内部信息可修改。示例:publicclassFinalTest{publicstaticfinalintnum=10;publicstaticfinalDogdog=newDog("TwoHa",10);publicstaticvoidmain(String[]args){System.out.println(num);System.out.println(dog.getName());//程序错误//num=20;dog.setName("三哈");System.out.println(dog.getName());}}3.2常量常量是用publicstaticfinal修饰的变量,其值必须被初始化,执行过程中不能修改该值。常量常用于文件协调,提高代码可读性,方便后期维护。常量命名规范:词名大写,多个词用下划线连接执行原则:编译时替换,将所有常量替换为字面值。将其替换为文字值以提高执行效率。4.枚举、接口和抽象类4.1枚举(enum)枚举是java的一种特殊类型,用于对信息进行标记和分类格式:修饰符enumenumerationtype{...}例子:publicenumDirection{UP("Up("Up",1),DOWN("下",2),LEFT("左",3),RIGHT("右",4);私有字符串名称;私有int标志;privateDirection(Stringname,intflag){this.name=name;this.flag=标志;}publicStringgetName(){返回名称;}publicvoidsetName(Stringname){this.name=name;}publicintgetFlag(){返回标志;}publicvoidsetFlag(intflag){this.flag=flag;}}枚举的特点:所有枚举类都继承java.lang.Enum枚举类是final类,不能被继承构造函数都是私有的,不能实例化。枚举类的第一行默认为枚举类对象的名称。4.2接口(interface)java中的接口是一种规范,类似于生活中的接口。比如现在市面上的Type-C充电口就是一个规范,大家就按照这个来设计,这样就可以通用了。限制一致的内容也会打开自定义实现。4.2.1定义格式修饰符接口类名{...}4.2.2特点JDK8之前只能有抽象方法和常量(下面介绍)接口不能实例化接口中的所有成员都是public的,默认是编写4.2.3接口使用(实现)格式:修饰类类名implements接口类名1,接口类名2...{...}接口用于实现实现该接口的类被调用它是实现类,也可以理解为子类。使用关键字implements,接口可以单独实现,也可以由多个类实现。实现一个接口,必须重写所有的抽象方法,否则实现类就是抽象类。继承与实现:①类只能单继承②类可以多实现③接口可以多继承4.2.4JDK8之后新的接口规范接口定义的时候,需要很多子类来实现。在后期的扩展和维护中,需要添加新的抽象方法。这时候必须实现所有的实现类,否则程序会编译失败。这会导致很多不必要的工作。在JDK8之后增加了新的规范。默认方法方法定义的格式类似于类成员方法,修饰符必须是default。该方法需要被接口实现类调用。示例:公共接口Interface1{voidshow();默认intadd(intx,inty){returnx+y;}默认intaddNum(intx,inty){returnadd(x,y);}}publicclassInterfaceImplimplementsInterface1{@Overridepublicvoidshow(){System.out.println("实现了Interface1的show方法");inta=addNum(1,2);System.out.println("调用抽象类默认方法:"+a);}publicstaticvoidmain(String[]args){InterfaceImplanInterface=newInterfaceImpl();接口.show();}}静态方法静态方法用public(默认修饰符)修饰,method需要加上static。必须使用接口本身调用接口静态方法。//接口方法,写在Interface1interfacestaticdoublegetPI(){return3.14;}//执行接口静态方法Interface1.getPI();privatemethod(jdk1.9之后)方法必须使用private修饰,仅在本例中默认调用类和私有方法:privatevoidgo(){System.out.println("开始执行接口私有方法");}4.2.5注意事项接口不能实例化对象一个类可以实现多个接口,接口中的静态方法不冲突。一个类继承父类,同时实现多个接口。如果接口和父类有同名方法,则默认使用父类实现多个单继承方法。4.3抽象类(abstract)在Java中是抽象的。意思是如果一个类中有不确定的方法需要不同的子类来实现,可以使用abstract创建一个抽象类,只需要定义方法名,不需要具体实现。abstract关键字可以修饰类和方法。//抽象类格式修饰符abstractclassname{}//abstract方法修饰符abstract返回类型方法名(参数列表...);//示例publicabstractclassAbstractTest{publicabstractvoidshow();}abstractclass特点和注意事项:抽象类不能被实例化。抽象类的成员有抽象类,不一定有抽象方法。具有抽象方法的类必须是继承抽象类的抽象类。子类必须重写抽象方法,否则这个A类也是抽象类。抽象不能修改成员变量、构造函数和代码块。使用场景:你可以把一个抽象方法想象成一个模板,这时大部分功能都是一样的,只有少数功能是唯一的。这时候可以使用抽象类,让用户继承抽象类的重写方法。抽象类的优点:提高代码的复用性,将需要实现的方法定义为抽象方法,让用户只需要关心要实现的功能希望大家喜欢,收藏,支持,支持!源码【GitHub】【码云】