方法的三要素都是什么
方法:分为两部分
1:方法的声明部分
返回值类型 方法名(参数)
2:方法的实现部分
{
方法执行过程
}
什么是抽象方法,抽象方法怎么书写
只有方法的声明部分,实现部分用;替代,默认用abstract
abstract 返回值类型 方法名(参数);
抽象类的特点是什么(5)
1:抽象类不能实例化对象,但是可以声明引用,指向它子类的对象
2:抽象类是有构造方法-子类构建对象的时候,默认调用
3 :抽象类可以没有抽象方法,但含有抽象方法类必须声明为抽象类
4:当一个类去继承抽象类的时候,必须实现这个抽象类所有的抽象方法,
如果没有全部实现,那么这个类也得声明为抽象类
5:抽象类不能用final来修饰(abstract和final不能同时使用)
抽象类:
package com.chinasoft.demo.inf2;
public abstract class AbsTest {
public abstract void tt();
}
接口:
public interface Test {
int test(int a,int b);
int testx(int a,int b,int c);
}
package com.chinasoft.demo.inf2;
public class TestMain {
public static void main(String[] args) {
//抽象类
AbsTest at = new AbsTest() {
@Override
public void tt() {
// TODO Auto-generated method stub
}
};
//接口
Test test = new Test()
// 匿名内部类
{
@Override
public int test(int a, int b) {
return a + b;
}
@Override
public int testx(int a, int b, int c) {
// TODO Auto-generated method stub
return 0;
}
};
System.out.println(test.test(1, 2));
// Test test = new Test(){
//
// @Override
// public int test(int a, int b) {
// return a+b;
// }
// };
//
// Test test1 = new Test() {
//
// @Override
// public int test(int a, int b) {
// return a-b;
// }
// };
//
// Test test2 = new TestImpl();
// Test test3 = new TestImpl();
}
}
什么是接口
定义了模块和模块之间连接的协议(协议 or 标准)
接口的特点(1.8)
以前和1.8以后,为什么要添加这个方法呢
(1.8以前)接口的特点:(7)
1:接口不能实例化对象,可以声明引用,指向任何它实现类的对象(向上造型)
2:接口没有构造方法
3:接口中的属性默认是静态常量,默认被 public static final修饰
4:接口中的方法都是抽象方法,默认被public abstract修饰
5:一个类实现接口,使用关键字implements,必须实现所有的抽象方法,
如果没有全部实现.这个类必须声明为抽象类
6:一个类在继承另外一个类的同时可以实现多个接口
7:接口之间继承使用extends 接口支持多继承
jdk 1.8以后,接口加入的方法的默认实现
格式:
default 返回值 方法名(参数){
默认的执行过程
}
加入默认实现的方法,因为如果接口里面的所有的方法都是抽象方法,那么添加一个方法的时候所有实现这个接口的类都要实现这个方法,没有办法进行个性化执行方法的设置,添加了以后,需要实现这个方法的只需要重写这个默认实现的方法就可以了,不需要实现的方法也不需要进行实现。不用执行空的放方法,增加代码的可读性精简性
什么是内部类
class 外部类{
class 内部类{
这里方法中可以访问外部类的所有的属性和方法
}
}
什么是匿名内部类
匿名内部类:(这个类是能用一次)
接口 test = new 接口()
//匿名内部类
{
实现若干的抽象方法;
};
什么是函数式接口
函数式接口:只有一个抽象方法的接口叫函数式接口
函数式接口可以用拉姆达表达式简化实现
@FunctionalInterface注解加在接口上,表示限制它所修饰的接口必须是函数式接口
()->…
\8. 拉姆达表达式规则:
参数:
1: () : 没有任何参数()不能省略
2: x : 只有一个参数的时候,()可以省略,参数名自己定义
3: (x,y,…)多个参数的时候: ()不能省略,类型可以省略,按原方法的位置匹配参数
只需要指定返回值的时候— …->表达式或者值
当方法的执行一个过程不只一句话 …->{
代码段
}