有书共读】java核心技术卷1--第6章

======================java核心技术卷1第6章----接口,lambda表达式与内部类==============
主要内容:
1 接口与示例
2 lambda表达式
3 内部类

=============================================================================
1 接口与示例
1.1  接口主要是用来描述这个类具有哪些功能,最直观的就是具有哪些方法,但不给出每个方法的具体实现。
一个类可以实现一个或多个接口,因为Java是没有多重继承的,是通过接口来实现C++中多继承的功能。

1.2 接口中的所有方法默认为public,在接口中定义方法时不需要声明public,类实现接口时,需要对实现的方法
加关键字@Override 并声明为public

1.3 接口中不能包含实例域和静态方法,可以含常量;可以用instanceof判断实现接口的类对象是否实现了
某个特定的接口

1.4 解决默认冲突方法规则:
1) 超类优先。如果超类定义了一个具体的方法,同名且同参数的默认方***被忽略
2) 接口冲突。如果一个接口提供了一个默认方法,另一个接口也提供了一个同名且参数类型相同的方法,
必须覆盖这个方法来解决冲突

1.5 接口示例:
//接口定义
public interface ActionListener{
void actionPerformed(ActionEvent event);
}

//类实现接口
class TimePrinter implements ActionListener{
public void actionPerformed(ActionEvent event){
System.out.println("At the tone, the time is "+new Date());
ToolKit.getDefaultToolKit().beep();
}
}

2 lambda表达式
2.1  lambda表达式是一个可传递的代码块,可以在以后执行一次或者多次
lambda表达式表达形式: 参数,箭头(->)以及表达式,如:
(Strig first,String second)->{
if(first.length()<second.length()){
return -1;
}else if(first.length()>second.length()){
return 1;
}else{
return 0;
}
}

2.2 对于只有一个抽象方法的接口,需要这种接口的对象时,可以提供一个lambda表达式。这种接口为函数式接口最好把lambda表达式看作时一个函数,而不是一个对象,lambda表达式可以传递到函数是接口

3 内部类
3.1  内部类时定义在一个类中的类。用到内部类的原因:
1) 内部类方法可以访问该类定义所在的作用域中的数据,包含私有数据
2) 可以对同一个包中的其他类隐藏起来
3) 想定义一个回调函数且不想写大量代码时,可以使用匿名内部类

3.2 内部类  种类:成员内部类, 局部内部类,匿名内部类
成员内部类:在外部类内部直接定义(不在方法内部或代码块内部)的类就,可直接访问外部类的所有变量和方法
局部内部类:定义在代码块中的类。它们只在定义它们的代码块中可见,不能用public ,private修饰,作用域被限定在局部类的块中。
匿名内部类:匿名内部类是局部内部类的一种,没有变量名指向这个类的实例,而且具体的类实现会写在这个内部类里面。
匿名类没有类名和构造器,因此匿名内部类必须继承一个父类或实现一个接口,通过将参数传递给父类构造器,实现接口的时候,不能有构造参数
静态内部类:将内部类声明为static,不需要引用外部类对象

全部评论

相关推荐

头发暂时没有的KFC总裁:找廉价劳动力罢了
点赞 评论 收藏
分享
2024-12-26 20:46
复旦大学 C++
国棉17厂丶小王:拿了offer的那个周末晚上去网吧通宵,去网吧不知道玩什么刷了lc的每日一题,然后试着第一次打开了三角洲行动,从此少了一个已经刷了700道题的lc用户,但是烽火地带多了一只🐭🐭
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务