Java学习之路-day21

1、在进行条件判断时,单一的一个条件满足,并不代表所有条件都成立了,通常使用反向判断,进行优化代码:
2、程序在完全启动之前,就要被完全加载;这样才能被使用,如果需要这样的数据要求,在加载的时候,就已经被完全加载完成,那么就使用静态static,和静态代码块,进行初始化加载

public class Demo_01{
//在数据匹配之前,数据就要准备好,优先加载完成,使用静态变量
static ArrayList<User> list = new ArrayList<>();
static{
User user1 = new User();
list.add(user1);
//优先加载数据,因为要匹配录入的数据,必须先存在等待数据的匹配,所以,放在静态代码块中,因为静态优先于非静态先加载
}
public static void main(String[]args){
}
}

将需要进行优先加载完成的数据,放在静态代码中,等待被使用,在程序在运行加载之前,该类数据就已经被加载;
静态代码块:在类中方法外的。随着类的加载而执行且执行一次,同时优先于main方法和构造方法执行;
【注意】
【1】【类加载时,数据先加载进来,需要使用静态;】
【2】用户登录匹配时,其实用户的相关数据就已经存在,等待用户的匹配,类似这样的数据,就需要使用静态进行修饰,优先成员进行加载完成

public class Test_01{//静态方法不能访问非静态方法,如果访问非静态,需要构建对象进行调用非静态方法
public static void main(String[]args){
	Test_01 t = new Test_01();
	t.check();
}
public [static] boolean check(String str){
}
}

3、什么时候定义一个抽象类?
在父类不明确某个功能时,这样的功能就要定义为抽象方法,有抽象方法的类,必须定义为抽象类;同时在明确功能的,可以不定义为抽象类;
【注意】本类中有特殊的属性,是不能定义在父类中,因为父类的资源是共享的;
【a】如何加载子类的特有属性呢?通过全参的构造,调用父类的全参构造,同时将子类特有的属性,添加到全参的构造中
【b】构造方法是不能被覆盖重写的,因为构造方法名是和类名相同的
不要为了继承为继承
4、接口是多个类的公共规定,给实现类定义的规则;与类是同一级别,是另一种引用数据类型;接口中不能被实例化,里面有抽象方法;
【常量,抽象方法JAVA7,默认方法,静态方法JAVA8和私有方法JAVA9】;
5、
在任何版本中,接口都能定义抽象方法;
public interface 接口名称{}
public class 类名称{}//接口和类是同一级别的,命名类似,
接口当中的抽想方法,修饰符必须是两个固定的关键字,public abstract,同时两个关键字是可以省略的,系统会默认加上的public abstract void 抽象方法名();
abstract在抽象类中是不可以省略的,如果省略就变成了成员方法了;
【注意】abstract 不可以和 private私有的同时使用,只能在本类中使用,而abstract修饰的方法,必须要覆盖重写,一个只能再本类中使用,一个必须要进行覆盖重写,相互矛盾;
6、
public class 实现类名称 implements 接口名称{
}
实现类必须覆盖重写接口中的所有抽象方法,创建实现类,进行使用接口
MyInterfacAbstractImpl实现类名称
7、接口的使用场景
例:
定义一个规则,体育老师/英语老师,都是人类,英语老师必须会英语,体育老师不一定会英语,
如果把英语定义为类,英语老师来继承,但是继承是单继承的,不能有两个父类,这种情况将英语定义为接口,谁想拥有说英语这个接口谁就去实现这个接口即可;
8、接口的抽象方法——》定义规范,接口中不允许有成员,所以接口中没有构造方法
9、默认方法,来解决接口升级问题,【解决方法:可以添加一个新接口】
public default void methodDefault(){}
【a】public是可以省略的,但是不能是其他修饰符,例如private;
【b】接口中的默认方法,实现类是可以继承的,
调用默认方法,如果实现类没有,就会向上找接口的
接口的默认方法,实现类可以覆盖重写,同时将方法中的default关键字去掉,也可以通过接口给实现类提供功能;
10、静态方法
public static 返回值类型 方法名称(){}
一个类可以实现多个接口,如果使用实现类的对象进行调用,会产生冲突;
同时接口中的静态方法就是提供给接口的本身使用的,不想让子类进行使用;与类有关,跟实现类的对象没有关系,所以不能使用实现类对象进行调用
接口的静态方法–》通过接口直接进行调用静态方法;
11、私有方法
1、普通私有方法,解决多个【默认方法】之间重复代码的问题,对重复代码
进行提取,再次封装成一个方法,供接口内部使用;提高代码的复用性
private 返回值类型 方法名称(){}
2、静态私有方法,解决多个【静态方法】之间重复代码的问题
private static 返回值类型 方法名称(){}//只有Java9+的才有这样的特性
12、常量
接口中的特殊的【成员变量】,必须使用public static final 三个关键字进行修饰,效果上就是一个常量
public static final 数据类型 常量名称 = 数据值;
接口中的常量,一旦赋值,不可以进行修改,同时必须进行赋值,不赋值会报错;同时接口中常量的名称,使用完全大写字母;
public static final num = 10;
【注意】
【1】在类中可以在静态代码块中对final修饰的变量进行赋值,并且只可以赋值唯一的一次,如果进行二次赋值将会报错;
【2】在接口中final的常量是不可以不赋值,必须通过手动进行赋值,同时接口中不能有静态代码块;
【3】final关键字修饰
final修饰的变量–》常量
final修饰的方法–》最终的方法,不能被覆盖重写
final修饰的类–》最终的类,不能被继承,没有子类
接口在什么场景下进行使用?知识点太弱了,要夯实基础,共勉,以马内利

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值