抽象类
1、 在多态中,父类方法的方法体是多余的
2、 一个方法没有方法体,则该方法为抽象方法
3、 一个类中如果有抽象方法,那么这个类一定是抽象类,否则语法错误(abstract 抽象的)
4、 如果父类有抽象方法,那么子类需要实现该抽象方法,否则该类需要是抽象类(注:抽象类不能创建对象,但是可以有构造方法)
5、 一个抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类
6、 抽象类与普通类的区别:
。 。 。 a、抽象类不能创建对象,普通类可以
。 。 。 b、抽象类需要abstract关键词修饰,普通类不需要
。 。 。 c、抽象类可以有抽象方法,普通类一定没有抽象方法
父类:
package dubhe;
//3、一个类中如果有抽象方法,那么这个类一定是抽象类,否则语法错误(abstract 抽象的)
public abstract class Mammal {
public abstract void move();//2、一个方法没有方法体,则该方法为抽象方法
}
子类:
package dubhe;
public class Whale extends Mammal {
//4、如果父类有抽象方法,那么子类需要实现该抽象方法,否则该类需要是抽象类(注:抽象类不能创建对象,但是可以有构造方法)
//5、一个抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类
@Override
public void move() {
System.out.println("靠鳍游动。。。");
}
}
Test类:
package dubhe;
public class Test {
public static void main(String[] args) {
Mammal mammal = new Whale();
mammal.move();
//1、在多态中,父类方法的方法体是多余的
//6、抽象类与普通类的区别:
//a、抽象类不能创建对象,普通类可以
//b、抽象类需要abstract关键词修饰,普通类不需要
//c、抽象类可以有抽象方法,普通类一定没有抽象方法
}
}
————————————————————————
接口
1、 如果一个源文件中的方法全是抽象方法,则可以定义为接口
2、 接口没有构造方法
3、 接口中的抽象方法默认public abstract,所以可以忽略不写
4、 一个接口可以继承多个其他接口
5、 规范:接口名以I开头
6、 接口中的变量默认是 public static final
7、 接口中抽象方法使用 implements
8、 实现类实现接口的同时可以继承接口中的常量
9、 一个类如果不实现接口中所有方法,则该类必须为抽象类
10、 一个类可以实现多个接口
接口类:
//1、如果一个源文件中的方法全是抽象方法,则可以定义为接口
//2、接口没有构造方法
//3、接口中的抽象方法默认public abstract,所以可以忽略不写
interface IA{
}
interface IB{
}
//4、一个接口可以继承多个其他接口
//5、规范:接口名以I开头
//6、接口中的变量默认是 public static final
public interface IJIekou implements IA,IB{
int AGE = 18;
void move();
void breathe();
}
实现类:
//7、接口中抽象方法使用 implements
//8、实现类实现接口的同时可以继承接口中的常量
//9、一个类如果不实现接口中所有方法,则该类必须为抽象类
//10、一个类可以实现多个接口
public class Shixian implements IJIekou/*,List*/ {
@Override
public void move() {
System.out.println("wangboshuoqi");
}
@Override
public void breathe() {
}
}
Test类:
public class Test {
public static void main(String[] args) {
//11、instanceof
Shixian shixian = new Shixian();
System.out.println(shixian instanceof Shixian);
System.out.println(shixian instanceof Object);
// System.out.println(shixian instanceof IJiekou);
}
}
//1、一个类如果没有实现接口中所有方法,则该类必须为抽象类
//2、接口中不能定义具体东西
//3、从JDK8之后可以有具体方法,但必须为 static 或 sefault
抽象类与接口的区别:
1、 定义:抽象类 abstract 接口 interface
2、 构造方法:抽象类有构造方法 接口没有构造方法
3、 继承:抽象类只能单继承 接口可以继承多个接口
4、 实现:抽象类型extends 接口 implements
5、 成员变量:抽象类可以定义任何合法的成员变量 接口只能定义public static final的变量,即常量
6、 方法:抽象类可以定义任意合法方法 接口中只能定义抽象方法,JDK8.0+可以定义多个static或default修饰的具体方法