码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象_06【抽象类:abstract、接口:interface、实现:implements】

时间:2017-12-10 14:33:20      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:extends   描述   类实例化   共存   技术   表示   方法   面向对象   static   

抽象类:abstract
抽象:没有足够的描述功能,事物不具体的描述,却又有共性。

特点:
  1,方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰,抽象方法必须定义在抽象类中,该类也必须被abstract修饰。
  2,抽象类不能被实例化。
  3,抽象类必须有其子类覆盖所有的抽象方法后,该子类才可以实例化,否则该子类还是抽象类。

抽象类细节常见问题:
  1,抽象类中有构造函数吗?
  有,用于给子类对象进行初始化
  2,抽象类可以不定义抽象方法吗?
  可以,但是少见,目的就是不让该类创建对象。通常这个有方法体,却没有内容。
  abstract class Demo{
  void show();
  void show(){};//有方法体却没有内容
 }
  3,抽象关键字不可以和那些关键字共存?
  非法修饰符组合,abstract和private、static、final
  4,抽象类和一般类的异同点?
  相同点:抽象类和一般类都是描述事物,都在内部定义成员。
  不同点:1,一般类有足够的信息描述事物。
        抽象类描述事物的信息有可能不足。
      2,一般类中不能定义抽象方法,只能定义非抽象方法。
        抽象类可以定义抽象方法,同时也可以定义非抽方法。
      3,一般类可以被实例化
        抽象类不可以被实例化

  5,抽象类一定是个父类吗?
  是,因为需要子类覆盖其方法后才可以对子类实例化。

 Example:

 1 package new_Object;
 2 //定义一个抽象类
 3 abstract class Person_A{
 4     abstract void show();//抽象方法show();
 5 }
 6 //Student类继承Person类
 7 class Student_A extends Person_A{
 8     //实现抽象方法show();
 9     void show(){
10         System.out.println("抽象类");
11     }
12 }
13 public class Abstract_class {
14     public static void main(String[] args) {
15         Student_A stu=new Student_A();
16         stu.show();
17     }
18 }

技术分享图片

接口:interface{} 是一种特殊的抽象类,一个类可以实现多个接口。
  当一个类中的方法都是抽象的时候,这时可以将该抽象类用另一种形式来定义和表示,就是接口 interfce。
接口不可以实例化,只有由实现接口的子类并覆盖了接口中所有的抽象方法后,该子类才可实例化,否则这是子类就是抽象类。

接口中常见的成员:而且这些成员都有固定的修饰符
1,全局常量:public static final
2,抽象方法:public abstract
特点:接口中的成员都是公共的权限

 1 package new_Object;
 2 //定义school接口
 3 interface School{
 4     int ID=2015112401;
 5     String name="张三";
 6     //定义sspeak、show抽象方法
 7     void speak();
 8     void show();
 9 }
10 class Stu implements School{
11     //实现speak、show方法
12     public void speak(){
13         System.out.println("实现speak方法");
14     }
15     public void show(){
16         System.out.println("实现show方法");
17     }
18 }
19 //测试类
20 public class Interface_implements {
21     public static void main(String[] args) {
22         Stu p=new Stu();//创建student实例对象
23         //调用student类方法
24         p.speak();
25         p.show();
26     }
27 }

技术分享图片

多实现:在Java中不直接支持多继承,因为会出现调用的不确定性。所有Java将多继承机制改良,在Java改良成了多实现。

类与类之间是继承关系,类与接口之间是实现关系(implements)
Example:

 1 interface A{
 2 public void show();
 3 }
 4 interface B{
 5 public void show();
 6 }
 7 class Test implements A,B//多实现
 8 {
 9 public void show();    
10 }

 

面向对象_06【抽象类:abstract、接口:interface、实现:implements】

标签:extends   描述   类实例化   共存   技术   表示   方法   面向对象   static   

原文地址:http://www.cnblogs.com/cao-yin/p/8016530.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!