抽象类和接口

方法的三要素都是什么

方法:分为两部分

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,…)多个参数的时候: ()不能省略,类型可以省略,按原方法的位置匹配参数

只需要指定返回值的时候— …->表达式或者值

当方法的执行一个过程不只一句话 …->{

​ 代码段

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值