人生倒计时
- 今日已经过去小时
- 这周已经过去天
- 本月已经过去天
- 今年已经过去个月
界面
定义示例
//父类:Animal
public class Animal{
private String name;
private int age;
public Animal(){}
public Animal(String name,int age){
this.name = name;
this.age = age;
}
public String getName() {return name;}
public void setName(String name){this.name = name;}
public int getAge() {return age;}
public void setAge(int age) {this.age = age;}
public abstract void eat();
}
//接口
public interface Swim{
public abstract eat();
}
//子类
public class Dog extends Animal implements Swim{
public Dog(){};
public Dog(String name,int age){super(name,age)}
@Override
public void eat(){
System.out.println("狗吃骨头")
}
@Override
public void Swim(){
System.out.println("狗在游泳")
}
}
//测试类
public class Test{
public static void main(String[],args){
Dog erHa = new Dog("二哈",1);
erHa.eat();
erha.Swim();
}
}
接口中成员的特征
施工方法
类和接口的关系接口和接口的关系在jdk8默认方法静态方法jdk9私有方法适配器设计模式之后扩展
解决接口与接口实现类的矛盾
例子
//先写一个接口
package com.shuaige.day03;
public interface SpeakEnglish {
//假如我这里有10个方法
}
//然后再写一个类来继承这个接口,这个接口就相当于适配器
public abstract class 类名 extends SpeakEnglish{
//在这里吧接口的所有方法进行空实现(就是方法重写了,但是不写方法体),
}
//然后再用一个类继承这个适配器
public class 类名 extends 适配器{
//重写接口里你想用的那个方法就可以了
}
表达
定义:是一段可通过的代码块,可以在以后执行一次或多次abstract修饰符可修饰字段 方法和类,其本质是一个匿名函数
注意:表达式只支持函数式接口,即只有一种抽象方法的接口
格式:(参数1,...参数n)-> {方法体};
//这段代码的意思是这个lambda表达是接收两个字符串,然后比较他们的长度,根据结果返回相应的值
(String frist,String second){
if(first.length() < second.length()){
return -1;
}else if(fitst.length() > second.length()){
return 1;
}else{
return 0
}
}
内部阶级
使用场景:b类代表A类的一部分,b类单独存在没有意义
分类
成员内部类
当外部类成员变量和内部类成员变量同名时abstract修饰符可修饰字段 方法和类,如何访问内部类
Outer.this.变量名
静态内部类 局部内部类 匿名内部类