java 抽象类和接口的初步认识

在谈接口前先说一下另一个东西:抽象类、抽象方法

1.抽象类

1.1 抽象类
首先抽象类也是一个类,可以用来继承。和普通类一样也有构造方法,属性,方法,静态修饰成分等,
抽象类必须遵守的几条规则:
1)抽象类必须用abstract 修饰,用 abstract 修饰的类就是抽象类
2)抽象类中可以没有抽象方法
3)抽象类不能实例化对象
new 抽象类(); 这样的实例化是不正确的

public abstract class A{}              //定义一个抽象类A

1.2 抽象方法:
如果你想在类中设计这样一个方法,这个方法的具体实现由它的子类去决定,那么你可以在父类中声明这个方法为抽象方法
抽象方法必须遵守的几条规则:
1)抽象方法必须用abstract关键字修饰
2)抽象方法没有方法体
3)定义了抽象方法的类一定是抽象类
4)抽象方法只能用 public 或者 protected 关键字修饰,默认为public

public abstract class A {
    abstract void method();          //声明一个抽象方法(没有方法体即没有{})
}

public class B extends A {           //B类继承抽象类A
    public void method(){            //实现父类中的抽象方法
        System.out.println("我是抽象方法");
    }

    public static void main(String[] args) {
        B b = new B();
        b.method();
    }
}

1.3 总结
1.因为抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。不被继承的抽象类就毫无意义。
2.对于抽象类可以没有抽象方法这一说,这句话是一定要记住的。但是在实际中抽象类一般都有抽象方法,否则就与普通方法没有什么区别,抽象类就没有含义了。
3.如果子类B继承了抽象类A,那么在子类B中一定要实现父类A中的所有抽象方法。如果父类A中的抽象方法在B类有没实现的,这样B类也就只能被定义为抽象类,需要加上abstract。最终必须要有子类来实现父类的所有抽象方法,不然所有的类都会被定义为抽象类,这样就没办法创建对象。

2.接口

2.1 为什么需要接口
接口在java中是一类抽象方法的集合,一个类通过继承接口的方式来继承接口的抽象方式。
因为一个类可以实现多个接口,因此可以通过接口来实现多继承的问题,

2.2 接口与类的区别
1)接口不能用于实例化对象。
2)接口没有构造方法。
3)接口中所有的方法必须是抽象方法。
4)接口不能包含成员变量,除了 static 和 final 变量。
5)接口不是被类继承了,而是要被类实现。
6)接口支持多继承。

2.3 接口的特性
1)接口中的所有方法都会被隐式定义为抽象方法public abstract
2)接口中的方法是不能在接口中被实现的,只能由实现接口的类来实现
3)虽然接口中可以由变量,但是所有的变量都会被隐式定义为public static final类型

2.4 接口与抽象类的区别
1)抽象类中实现普通方法的实现,而接口中不可以
2)抽象类中可以有任何类型的变量,而接口中只有public static final类型的
3)抽象类中可以有静态代码块或静态方法,而接口中不可以
4)一个类只能继承一个抽象类,而一个类可以实现多个接口

2.5 定义一个接口及实现一个接口语法:
1.定义一个接口:
interface 接口名称{}

interface 接口名称{
		void a();        //接口中声明的方法都是抽象方法即  public abstract
}

2.一个类实现一个接口:
一个类实现一个接口必须实现接口中的全部方法,否则就要被定义为抽象类
public class 类名 implements{}

public class B implements A {
    public void a(){
        System.out.println("实现一个接口");
    }

    public static void main(String[] args) {
        B b = new B();
        b.a();
    }
}

2.6 接口的继承
1.一个接口可以继承另一个接口:
接口间的继承同样是用extends实现

interface C extends A{
    void b();
}

此时接口C继承接口A,在C中声明了一个方法b();要实现这个接口就必须实现C中的一个方法,同时也要实现继承自A中的方法。

2.同时接口间支持多继承:一个接口可以继承多个接口
继承的接口之间用,分隔

interface D extends A,C{
    void c();
}

2.7一个类实现多个接口
一个类实现多个接口,在每个接口间用,间隔,实现多个接口就需要实现这两个接口中的所有方法,否则就要定义为抽象类。

public class B implements A,C {
    public void a(){
        System.out.println("实现一个接口");
    }
    public void b(){
        System.out.println("实现第二个接口");
    }

    public static void main(String[] args) {
        B b = new B();
        b.a();
        b.b();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值