1、抽象类

/*
抽象的特点:
1,抽象方法没有方法体,必须由抽象关键字所修饰。
2,抽象方法一定存在于抽象类中,必须由抽象关键字所修饰。
3,抽象类不可以实例化。因为调用抽象方法没意义。
4,子类必须覆盖抽象类的所有抽象方法后,子类就可以实例化。否则该子类还是抽象类。


抽象类的常见问题:

1,抽象类一定是父类吗?
    是的,因为只有子类覆盖了抽象类中的方法,才可以创建对象,去使用这些方法。

2,抽象类中有构造方法吗?
    有,因为父类的构造函数可以给子类对象初始化。
    

3,抽象类中一定有抽象方法吗?
    不一定。
    其实抽象类和一般类都是用来描述事物的。都有具体的属性和行为。
    不同之处:
    抽象类中可以定义抽象类方法。但是不能实例化。
    一般类中不可以定义抽象方法,但是可以实例化。


    没有抽象方法的抽象类的出现,仅仅是不让该类创建对象。


4,抽象关键字不可以和哪些关键字共存呢?
    final:
    private:
    static:

2、接口

接口可以简单的理解为是一个特殊的抽象类。
abstract class AbsDemo
{
    abstract void show1();
    abstract void show2();
}

class Demo extends AbsDemo
{
    void show1(){}
    void show2(){}
}

  接口的思想
  1,接口是对外提供的规则。
  2,接口的出现提高功能的扩展性。
  3,接口的出现降低了耦合性。 解耦。


//用关键字interface来定义接口。而且内中的成员就固定为几种,而且修饰符是固定的。 //接口中的成员都是public修饰的。 特点: 1,接口不可以实例化。 2,接口的子类必须覆盖接口中所有的抽象方法后,该子类才可以实例化。否则该子类是抽象类。

抽象类其实负责的是一个体系的基本功能。
接口负责的是额外的功能。


抽象类和接口的区别
1,
抽象类和类之间存在的是继承(is a)关系,但是只能单继承。
接口和类之间存在的是实现(like a)关系,可以多实现。


2,
抽象类中是可以定义非抽象方法的,提供给子类直接使用。
接口中的方法都是抽象的,子类必须全部实现才可以使用。

 

单继承。


class Fu1
{
void show(){}
}


class Fu2
{
void show(){}
}


class Zi extends Fu1,Fu2//不允许。
{
}

 

 

3、练习

1,多态的好处弊端,前提。
 
本类的引用可以指向本类的对象也可以指向其子类的对象。★★★★★
Animal a = new Animal();
a = new Cat();
本类型的引用可以指向本类型的对象。
Animal a = new Animal();
a = new Cat();

class Animal
{
}
class Cat extends Animal
{
}

2,向上转型,向下转型什么时候用,代码举例!
class Dog extends Animal
{
    void eat()
    {
        System.out.println("....");
    }
}

class  
{
    public static void main(String[] args) 
    {
        System.out.println("Hello World!");
        show(new Cat());
        show(new Dog());

        Animal a = new Cat();
    }

    public static void show(Animal a)
    {
        a.eat();
    }
}

 

分类: JavaJavaSE

头像

小贱贱要飞

理想不只是成为一名程序猿,是成为一名编写人们生活每一步的艺术家!

0 条评论

发表评论

电子邮件地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据