一、Static关键字
修饰符:作用:修饰成员方法,成员变量
特点:1、被所在类的所有对象共享(判断是否使用静态关键字的条件)
2、随着类的加载而加载,优先于对象存在(对象需要类被加载后,才能创建)
3、可以通过类名调用(推荐使用)(也可以通过对象名调用)
注意事项:
1、静态方法只能访问静态的成员
2、非静态方法可以访问静态的成员,也可以访问非静态的成员
3、静态方法中是没有this关键字
非静态成员——实例(对象)成员
静态成员————类成员
静态变量在内存中只有一份数据
二、final关键字
final 关键字是最终的意思,可以修饰(方法,变量,类)
final 修饰的特点:
修饰方法:表明该方法是最终方法,不能被重写
修饰变量:表明该变量是常量,不能再次被赋值(变量的每个字母都需要大写,多个单词用下划线分割)
修饰类:表明该类是最终类,不能被继承
变量是基本类型:final修饰指的是基本类型的数据值不能发生改变
变量是引用类型:final修饰指的是引用类型的地址值不能发生改变,但是地址里面的内容是可以发生改变的
final修饰成员变量初始化时机:(1)直接给变量赋值
(2)在构造方法执行完毕前赋值
注意:abstract和final不可以共存:
在类中abstract希望子类继承,final是阻止继承;
在方法中,abstract 是希望子类重写,final阻止重写;
三、权限修饰符关键字
1.public:公共的,当前模块内都可以访问
2.protected:受保护的,同一个包下都可以,其他包下只有子类可以访问
3.默认权限(package-private):也称作为包私有,同一个包下可以,其他包不允许
4.private:只能本类访问
权限大小排行:public > protected > 默认权限 >private
常用权限:
private常用于封装修饰成员变量或者修饰构造(目的防止外界创建本类对象)
对于类只有两种权限:public和包私有(默认)
四、构造代码块
1、怎么写:在类中方法外定义一个大括号
2、构造代码块的执行特点,及作用:
执行特点:会在每一个构造方法执行前,执行一次
作用:如果每个构造方法有重复的逻辑时。比如可以给自定义常量赋值,或者抽取构造方法中共性内容
五、静态代码块
1、怎么写:
直接在构造代码块上加上static
2、静态代码块的执行特点,及作用执行特点:随着类加载到内存,会执行一次。(类加载到方法区初始化的时候就会执行静态代码块)作用:可以对静态数据进行初始化
六、局部代码块
1、怎么写:任何局部代码位置都可以定义局部代码块 ,就是一对大括号。静态代码块,构造代码块,方法中,构造方法中都可以定义局部代码块。相比之下在方法中定义局部代码块稍多一些
2、作用:可以限定变量的作用域 , 在代码块执行完毕, 及时释放内存3、变量的作用域:变量所在的那对大括号即是作用域范围
七、接口
1、介绍:当一个类中的所有方法都是抽象方法的时候,此类就是定义规则的类 , 我们就可以将其定义为接口
接口也是一种引用数据类型,它比抽象类还要抽象
2、接口存在的两个重要意义规则的定义程序的扩展性
3、接口的定义和特点(1)接口用关键字interface来定义public interface 接口名 {}
(2)接口不能实例化(3)类与接口之间是实现关系,通过implements关键字表示public class 类名 implements 接口名 {}
(4)接口的子类(实现类)要么重写接口中的所有抽象方法要么是抽象类
注意:类和接口的实现关系,可以单实现,也可以多实现。
public class 类名 implements 接口名1 , 接口名2 {}
4、接口中成员的特点(1)成员变量只能是常量
默认修饰符:public static final
(2)构造方法没有(3)成员方法只能是抽象方法默认修饰符:public abstract
类和接口的关系
1、类和类的关系继承关系,只能单继承,但是可以多层继承/2、类和接口的关系实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口3、接口和接口的关系继承关系,可以单继承,也可以多继承
4.访问方式:最常用方式是直接用接口名去访问。
接口和抽象类的使用区别:
接口和抽象类有些共同点:都是抽象的类型,都不能实例化对象,都当做父类型使用,
他们的区别如下:
(1) 事物的共性内容(属性,行为),抽取到父类中(可以是抽象类)
(2) 特有的行为,可以抽取到接口中
1 JDK8版本可以在接口中定义默认方法 2 默认方法 : 允许在接口中定义非抽象方法,但是需要使用关键字 default 修饰,这些方法就是默认方法 作用 : 解决接口升级的问题 格式 : public default 返回值类型 方法名(参数){ ... } public default void show(){ ... } 注意事项 : 1 默认方法不是抽象方法,所以不强制被重写。但是可以被重写,重写的时候去掉default关键字 2 public可以省略,default不能省略 3 如果实现了多个接口,多个接口中存在相同的方法声明 子类就必须对该方法进行重写 接口中的静态方法,直接用接口名调用就行
接口的使用思路
1、如果发现一个类中所有的方法都是抽象方法,那么就可以将该类,改进为一个接口
2、涉及到了接口大面积更新方法,而不想去修改每一个实现类,就可以将更新的方法,定义为带有方法体的默认方法
3、希望默认方法调用的更加简洁,可以考虑设计为static静态方法。(需要去掉default关键字)
/4、接口中的方法出现了重复的代码,还不想被其他类访问, 可以考虑抽取出一个私有方法。(需要去掉default关键字)
//定义接口
package com.itheima.interface_demo.interface_test1;public interface Player { // public abstract void play(); 可以简写 void play(); void pause(); void stop();}
//定义MP3类
package com.itheima.interface_demo.interface_test1;public class MP3 implements Player { @Override public void play() { System.out.println("MP3正在播放音乐!"); } @Override public void pause() { System.out.println("MP3暂停播放音乐!"); } @Override public void stop() { System.out.println("MP3停止播放音乐!"); }}
//定义Mp4类
package com.itheima.interface_demo.interface_test1;public class MP4 implements Player { @Override public void play() { System.out.println("MP4正在播放音乐!"); } @Override public void pause() { System.out.println("MP4暂停播放音乐!"); } @Override public void stop() { System.out.println("MP4停止播放音乐!"); }}
定义Phone类
package com.itheima.interface_demo.interface_test1;public class Phone implements Player { @Override public void play() { System.out.println("Phone正在播放音乐!"); } @Override public void pause() { System.out.println("Phone暂停播放音乐!"); } @Override public void stop() { System.out.println("Phone停止播放音乐!"); }}
//测试接口
package com.itheima.interface_demo.interface_test1;/* 需求 : 1 创建一个播放接口(Player) 2 定义三个抽象方法 播放(play) 暂停(pause) 停止(stop) 3 定义MP3类,MAP4类,手机类,实现接口,重写抽象方法 */public class Test { public static void main(String[] args) { MP3 mp3 = new MP3(); mp3.play(); mp3.pause(); mp3.stop(); MP4 mp4 = new MP4(); mp4.play(); mp4.pause(); mp4.stop(); Phone phone = new Phone(); phone.play(); phone.pause(); phone.stop(); }}
八、枚举
1、定义枚举
权限修饰符 enum枚举名称 {
枚举项1,枚举项2…;
}
枚举项之间使用逗号分隔,最后使用分号结束
枚举项是当前类型的对象
public enum Sex{ BOY,GIRL;}
//将字符串转换为枚举项Student str = new Student();Scanner scanner =new Scanner(System.in);String sexStr = scanner.next();Signal blue = Signal.valueOf(sexStr);
枚举其实本质上是一个类,每一个枚举项是本枚举类类型的一个对象。
枚举类都是继承了枚举类型:java.lang.Enum
枚举都是最终类,不可以被继承
构造器的构造器都是私有的,枚举对外不能创建对象
枚举类的第一行默认都是罗列枚举对象的名称的。
枚举类相当于是多例模式。
枚举类型也是属于类,允许定义其他成分,比如构造器(构造方法权限一定是私有的,即使省略也是private权限),成员方法,成员变量
声明:本文部分素材转载自互联网,如有侵权立即删除 。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容