- 1.接口的使用
- 2.java中,接口和类是并列的两个结构
- 3.如何定义接口:定义接口中的成员
-
3.1:在JDK7及以前:只能定义全局常量和抽象方法
-
》全局变量:public static final的,单数书写时,可以省略
-
》抽象方法 public abstract的
-
3.2:JDK8;除了定义全局常量和抽象方法之外,还可以定义静态方法,默认方法
- 4.接口中不能定义构造器,意味着接口不可以实例化
- 5.java开发中,接口通过让类区实现的方式来使用
- 如果实现类覆盖接口中所有的抽象方法,那么实现类就可以实例化
- 如果实现类没有覆盖接口中所有的抽象方法,则此是实现类仍为一个抽象类
- 6.java类可以实现多个接口,
public class InterfaceTest {
public static void main(String args[] ) {
System.out.println(Flyable.MAX_SPEED);
System.out.println(Flyable.MIN_SPEED);
Plan plane=new Plan();
plane.fly();
}
}
interface Flyable{
//全局变量
public static final int MAX_SPEED=7900;
int MIN_SPEED=1;
public abstract void fly();
void stop();
}
interface Attackable{
void attack();
}
class Plan implements Flyable{
@Override
public void fly() {
// TODO Auto-generated method stub
}
@Override
public void stop() {
// TODO Auto-generated method stub
}
abstract class Kite implements Flyable{
public void fly() {
}
}
class Bullet extends Object implements Flyable,Attackable,CC{
@Override
public void method1() {
// TODO Auto-generated method stub
}
@Override
public void method2() {
// TODO Auto-generated method stub
}
@Override
public void attack() {
// TODO Auto-generated method stub
}
@Override
public void fly() {
// TODO Auto-generated method stub
}
@Override
public void stop() {
// TODO Auto-generated method stub
}
}
}
interface AA{
void method1();
}
interface BB{
void method2();
}
interface CC extends AA,BB{
}
abstract关键字的使用
- 1.abstract:抽象的
- 2.abstract可以用来修饰的结构:类和方法
- 3.abstract修饰类:抽象类
-
》此类不能实例化
-
》抽象类中一定有构造器,便于子类实例化时调用(涉及:子类对象实例化的全过程)
-
》开发中,都会提供抽象类的子类,让子类对象实例化,完成相关的操作
- 4.abstract修饰方法:抽象方法
-
》抽象方法,只有方法的声明,没有方法体
-
》包含抽象方法的类,一定是一个抽象类。反之,抽象类中可以没有抽象发
-
》若子类重写了父类中所有的抽象方法,此子类方课实例化
-
若子类没有重写父类中的所有的抽象方法,则此子类也是一个抽象类,需要使用abstract修饰
public class AbstractTest {
public static void main(String args[]) {
// Person person=new Person();
// person.eat();
}
}
abstract class Creature{
public abstract void breath();
}
abstract class Person extends Creature{
String name;
int age;
public Person() {
}
/**
* @param name
* @param age
*/
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
// public void eat() {
//
// }
public abstract void eat();
public void walk() {
System.out.println("人:走路");
}
}
class Student extends Person{
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String name, int age) {
super(name, age);
// TODO Auto-generated constructor stub
}
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("多吃有营养的食物");
}
@Override
public void breath() {
// TODO Auto-generated method stub
System.out.println("学生应该呼吸新鲜的空气");
}
}