Java接口和抽象类的理解

接口和抽象类的相同之处就是 都会有抽象方法编程

抽象方法就是一个没有方法体 等待继承的子类完成的方法ide

然而接口比较严格 它的方法必须是抽象方法且是公开的 学习

抽象类 能够有本身的属性 和 实体方法spa

 1 package com.jay;
 2 
 3 
 4 public abstract class Dog {
 5     String kind = "dog";
 6 
 7     void playGame() {
 8         System.out.println("The dog is playing game");
 9     }
10 
11     abstract void makeMoney();
12 }

有一个抽象类Dog,能够把abstract理解成这是一个混子类,也就是这个Dog可能会有一些事本身不想作想让别人去作code

这个Dog有本身得种类kind,指示本身只一条🐶对象

有一个本身方法playGame(),若是是本身特有的不让儿子继承的化,能够加修饰符private。//很少解释了blog

而后这个Dog这辈子没有赚多少钱,但愿儿子多赚点钱,将本身的遗愿让儿子继承,因而有了抽象方法 makeMoney()继承

儿子感动了因而打算完成父亲的遗愿赚钱因而乎接口

package com.jay;


public class Son extends Dog{
    
    @Override
    void makeMoney() {
        System.out.println("The son of dog made more money");
    }
}

这个儿子实现父亲的遗愿。数学

这是好的一方面,结果这个儿子也是不学无术,不想赚钱。因而乎

package com.jay;


public abstract class Son extends Dog{
    
}

本身也成为了一个混子,把这件没有完成的事留给下个继承人。

能够看得出来抽象类它也是一个类。

首相用面向对象的思想来理解,类其实就是将生活中客观存在的对象,将对象的属性和特性封装起来

而接口与类不一样,它不能够被实例化(这里指单独将接口实例化),由于它不能够看成一个对象

接口能够被理解为一种技能,功能。好比一扇门门能够有防盗及这个技能也能够同时拥有报警的功能

也就是说 一个类能够实现多个接口

这里有一个学习的接口,定义了学习数学和学习计算机的方法,

package com.jay;


public interface Learn {
    void learnMath();

    void learnComputer();
}

而后这是一个烹饪的方法

package com.jay;


public interface Cooking {

    void cookingFish();

    void cookingBone();
}

而后这狗很勤劳都继承这些技能,而且实现

 1 package com.jay;
 2 
 3 
 4 public class Son extends Dog implements Learn, Cooking {
 5 
 6     @Override
 7     void makeMoney() {
 8         System.out.println("The son of dog made more money");
 9     }
10 
11     @Override
12     public void cookingFish() {
13         System.out.println("cookingFish");
14     }
15 
16     @Override
17     public void cookingBone() {
18         System.out.println("cookingBone");
19     }
20 
21     @Override
22     public void learnMath() {
23         System.out.println("learnMath");
24     }
25 
26     @Override
27     public void learnComputer() {
28         System.out.println("learnComputer");
29     }
30 }

固然若是是什么都不去实现,也能够在class上加abstract修饰符告诉他人这里有未完成的方法

package com.jay;


public abstract class Son extends Dog implements Learn, Cooking {


}

固然你也是能够加abstract修饰之后有选择性的选择几个抽象方法去实现

然而每一个子类只能有一个父类

Java 是只能单继承的一门编程语语言 

能够这样说,一个 木头(object)  被制做(继承) 成 一扇门 那么这个物体就只能成为门,它

就不能够成为汽车或者是电脑

抽象类和通常的类的区别就是 在抽象类中有抽象方法

抽象方法必须在抽象类中 当子类继承一个抽象类的时候 子类必须完成父类的抽象方法

或者子类也成为抽象方法

抽象类就是表示在这个类中有抽象方法(声明一个没有抽象方法的抽象类是没有意义的)等待子类去实现抽象方法

相关文章
相关标签/搜索