Open aple521fjx opened 6 years ago
1.类只能单继承,而接口可以多实现 2.接口中的属性,方法都是默认public关键字修饰的,而抽象类里面可以用其他修饰关键字修饰 3.接口不用写默认的抽象方法
工厂设计模式,对于基本的对象创造一个专门生产的工厂,通过统一的一个工厂,传递不同的参数制造出不同的对象。
狗类的接口(含有两个抽象方法)
public interface dog {
//说话的方法
void say();
//弹跳的方法
void jump();
}
两个特定的对象(大狗和小狗),都实现接口
public class BigDog implements dog {
//大狗的类 实现接口dog里的方法
@Override
public void say() {
System.out.println("我是大狗,我很凶");
}
@Override
public void jump() {
System.out.println("我能跳的非常高");
}
}
public class SmallDog implements dog {
//这是小狗的类 实现接口方法
@Override
public void say() {
System.out.println("我是小狗,我很温柔");
}
@Override
public void jump() {
System.out.println("我跳的很低");
}
}
抽象工厂类,包含一个造狗的方法
public abstract class Factor {
public abstract <T extends dog> T Creatdog(Class<T> clz);
}
具体的一个狗工厂,继承基本工厂类,重写父类方法
public class Dogfactor extends Factor {
//继承工厂类 重写父类方法
@Override
public <T extends dog> T Creatdog(Class<T> clz) {
dog dog1=null;
try {
dog1=(dog)Class.forName(clz.getName()).newInstance();
}catch(Exception e){
e.printStackTrace();
}
return (T) dog1;
}
}
主函数
public class main {
public static void main(String args[]){
//创建造狗工厂
Factor factor=new Dogfactor();
//制作小狗
SmallDog smalldog=factor.Creatdog(SmallDog.class);
smalldog.jump();
smalldog.say();
System.out.println();
//制作大狗
BigDog bigdog=factor.Creatdog(BigDog.class);
bigdog.jump();
bigdog.say();
}
}
我跳的很低 我是小狗,我很温柔
我能跳的非常高 我是大狗,我很凶
public static void main(String[] args) {
//创建要遍历的集合,并初始化
List <String> list=new ArrayList<>();
list.add("hello");
list.add("world");
list.add("JAVA");
list.add("fjx");
//第一种遍历
System.out.println("第一种遍历(fori):");
show1(list);
System.out.println("第二种遍历(foreach):");
show2(list);
System.out.println("第三种遍历(迭代器):");
show3(list);
System.out.println("第四种遍历(Stream):");
show4(list);
System.out.println("第五种遍历(lamdb表达式):");
show5(list);
}
public static void show1(List<String> list){
for (int i = 0; i <list.size() ; i++) {
System.out.println(list.get(i));
}
}
public static void show2(List<String> list){
for (String s:
list ) {
System.out.println(s);
}
}
`public static void show3(List<String> list){
Iterator<String> ite= list.iterator();
while(ite.hasNext()){
System.out.println(ite.next());
}
}
public static void show4(List<String> list){
list.stream().forEach(System.out::println);
}
public static void show5(List<String> list){
list.forEach((s)-> System.out.println(s));
}
第一种遍历(fori): hello world JAVA fjx 第二种遍历(foreach): hello world JAVA fjx 第三种遍历(迭代器): hello world JAVA fjx 第四种遍历(Stream): hello world JAVA fjx 第五种遍历(lamdb表达式): hello world JAVA fjx
简述Stream Java 8引入了全新的Stream API。这里的Stream和I/O流不同,它更像具有Iterable的集合类,但行为和集合类又有所不同。 最新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。这是目前为止对Java类库最好的补充,因为Stream API可以极大提供Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。
中间操作: filter() --------排除所有与断言不匹配的元素 map() --------对元素执行一对一的转换 peek() --------对每个遇到的元素执行一些操作 limit() --------保证后续的操作所能看到的最大数量的元素
最终操作: forEach() -------对流中的每个元素执行一些操作 toArray() -------将流中的元素装进一个数组 count() ---------计算流中元素的数量 findFirst() ------查找流中的第一个元素,是一个短路操作