java初级-抽象类和接口

抽象类 

 人们把不想被实例化的类,通常定义为抽象类,其实抽象类理解起来也很容易,比如当你上周去了动物园,回来后有人问你去动物园都看见了什么,你可以回答狮子、老虎、大象...但是绝不能回答 ‘动物’ 一词,因为动物太抽象了,所以人们通常把动物设为抽象类,而狮子等具体动物就会设成一个类,它有自己的属性,有自己的方法(行为),狮子就是动物的子类,继承父类后,要重写它的抽象方法。

```java

public abstract class Animal1 {

String name;

String color;

public void eat() {

}

public abstract void run();

}

class Dog extends Animal1 {


@Override

public void run() {

// TODO Auto-generated method stub

}

public void seeDoor() {

}

}

class Test{

public static void main(String[] args) {

Animal1 an = new Dog(); //向上转型

an.run();//调用的是子类重写以后的方法

//注意:an只能访问Animal1里面的方法和属性,an.run() 优先调用子类重写的方法

//要想调用子类独有的属性和方法 需要向下转型

}```

总结:

1. 关键字abstract

2. 不能被实例化

3. 抽象类中可以包含属性,方法,构造方法,抽象方法

4. 抽象方法无方法体public abstract void eat();

5. 子类必须重写父类的抽象方法

6. 抽象方法必须在抽象类中

接口

1. 关键字interface

2. 不能被实例化

3. 接口中包含抽象方法   抽象方法的三种写法:

1) public abstract void eat();

2) public  void eat();

3)  void eat();

4. 接口中的包含共有的静态常量(常量名要大写,如果由多个单词组成之间加下划线)   public static final double PI = 3.14;   也可将public static final省略  double PI = 3.14

5. 在jdk1.8之后 接口中可以有默认方法和静态方法   public default void eat(){ } public static void eat(){ }

6. 函数型接口 @FunctionalInterface   接口里面有且只有一个抽象方法

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容