蜡笔没了小新

愿生活正在渐渐变成你想要的样子

Java基础之抽象类与接口

抽象类的概念:   Java中,如果一个类中有一个方法声明是(抽象方法)抽象功能,那么这个类定义为抽象类

关键字:abstract  抽象的意思

抽象类的特点:抽象类不能直接实例化!(不能创建对象)             接口也不能实例化

关于抽象类:

                1)如果一个类中有抽象方法,那么这个类是一定是一个抽象类

                 2)抽象类必须有抽象方法吗? 抽象类中不一定都是抽象方法

抽象类的子类

                  1)如果子类是抽象类,没有意义,因为都不能实例化,对象如何创建

                 2)子类具体类,那么子类必须实现父类中的抽象功能.

抽象类的成员特点:

       成员变量:可以是变量,也是一个常量

       构造方法:可以有无参,可以有有参,作用:给对象进行初始化的.

       成员方法:可以有抽象方法,还可以有非抽象方法...

 abstract和哪些关键字是冲突的,不能共有!

        fianl:首先abstract修饰的类,该类中的方法子类继承之后需要重写的,可是final修饰的类不能比继承,也就没子类,方法更不能得到重写,相互冲突;不能共存

        private:私有的意思,方法子类是不能被继承到的,那么方法就没有被重写,可是abstract是要求方法重写的也相互冲突;不能共存

           static:static能被实例化可直接调用,abstract是不能被实例化的,冲突,不能共存

抽象类举例:

         packageorg.westos.抽象;

 

//定义一个抽象动物类

abstract class Animal{

        

         publicabstract void eat() ;  //抽象功能,没有方法体,需要子类实现抽象类的这个功能

        

        

         //非抽象功能

         publicvoid method() {

                  

         }

}

 

//具体的动物类

class Cat extends Animal{

 

         publicvoid eat() {

                   System.out.println("猫吃鱼....");

         }

        

}

 

//测试类

public class AbstractDemo {

         publicstatic void main(String[] args) {

                  

                   //创建Animal对象

                   //Animala = new Animal() ;//Cannot instantiate the type Animal

//               Animala = new Cat() ; 子类是抽象类,没有意义

                  

                   //多态,父类引用指向子类对象

                   Animala = new Cat()

                  

         }

}

 

 

接口

 

接口:体现的是事务的扩展性功能(额外动作,后天经过学习等等)

接口格式(标识符:类,接口:见名知意)

                interface  接口名{

                         //抽象功能

                         publicabstract void jump() ;// 接口中的方法不能有方法体,只能是抽象方法

 

                }

接口的特点:不能实例化

接口的子实现类:实现类 (具体的实现类)

                   class类名+impl implements 接口名{

                          

                 }

接口的子类如果是抽象类:没有意义,不能实例化

在实际开发中使用频率:

        接口多态(最多)

        抽象类多态(比较多)

        具体对象的创建(经常会使用)

接口成员的特点:

                成员变量:是一个常量,不能更改,并且默认的修饰符

                         publicstatic final:

                构造方法:接口不存在构造方法

                成员方法:都是抽象方法

                         默认的修饰符:publicabstract

 接口和接口之间的关系:继承关系

接口举例:

 

         packageorg.westos.接口;

 

//定义一个接口

interface AniamlTrain{

 

         //接口中的方法不能有方法体,只能是抽象方法

         publicabstract void jump() ;

         publicabstract void speak() ;

}

 

 

class Cat{}

 

//具体实现类

//class JumpCatImpl extends Cat implementsAniamlTrain,Speak{

         classJumpCatImpl extends Cat implements AniamlTrain{

 

         @Override

         publicvoid jump() {

                   System.out.println("部分猫就可以跳高了...");

         }

 

         @Override

         publicvoid speak() {

                   System.out.println("猫开口说话了...");

         }

        

}

public class Demo {

        

         publicstatic void main(String[] args) {

                   //接口多态

//               AniamlTrainat = new JumpCat() ;  //抽象类,和接口都不能实例化

                  

                   //创建对象

                   AniamlTrainat = new JumpCatImpl() ;//接口多态(实际开发中用的最多)

                   at.jump();

                   at.speak();

         }

}

 


接口和抽象类的区别:

         A)成员的区别

                   成员变量:

                                     抽象类:既可以常量,也可以是变量

                                     接口:只能是常量,默认的修饰符:publicstatic final

                   构造方法:

                                     抽象类:有构造方法,无参/有参 (给对象进行初始化的)

                                     接口:没有构造方法

                   成员方法:

                                     抽象类:可以有抽象方法,也可以有非抽象方法

                                     接口:只能是抽象方法 :默认的修饰符:publicabstract

         B)类与类/类与接口关系的区别

                   类与类之间的关系:

                                               继承关系,只支持单继承,不支持多继承,但是可以多层继承

                   类与接口的关系:

                                               实现关系,一个类继承另一个类的同时,还可以实现多个接口...

                   接口与接口的关系:

                                               是一种继承关系,既可以单继承,也可以多继承...

                                               接口1 extends 接口2,接口3...

 

         C)设计原则的 区别

                   1)抽象类: 是有继承关系---->体现的是一种"isa"的关系   (A是B的一种或者B是A的一种)

                   2)接口:类和接口:实现关系--->体现的是一种"like a"的关系(扩展功能)  :跳高猫 像猫

阅读更多
个人分类: Java
上一篇Java基础之继承和多态
下一篇Java基础之形式参数与返回值问题
想对作者说点什么? 我来说一句

JAVA接口抽象类

2012年01月29日 181KB 下载

java 抽象类练习题

2013年05月31日 55KB 下载

JAVA抽象类接口

2012年01月29日 34KB 下载

没有更多推荐了,返回首页

关闭
关闭