Java——继承下的抽象类与接口

在这里插入图片描述

前言
我们前一章写了继承性,这一章节,一起来学习Java中的抽象类与接口相关知识。

壹、抽象类

1、定义:用关键字abstract修饰的类称为抽象类(abstract类)。
2、格式:

  abstract   class A{
    ......
  }

3、特点:
(1)抽象类中可以有抽象方法;
与普通类相比,抽象类中既可以有抽象方法,也可以有非抽象方法。对于抽象方法,只允许声明,不可以实现,而且不允许使用 finalabstract 同时声明一个方法。看下面一个例子;

abstract class A
{
   abstract int min(int x,int y);
   int max(int x,int y)
   {
   return x>y?x:y;
   }
}

(2)抽象类不能用new运算符创建对象;
若一个非抽象类是一个抽象类的子类,在子类中必须重写父类中的抽象方法,给出方法体,即子类对于父类中的abstract所修饰的方法的重新声明,同时保证声明的方法名字,返回值类型,参数个数及类型于父类的抽象方法完全相同。

(3)做上转型对象
尽管抽象类不能创建对象,但继承下的子类必须重写子类中的其中的全部抽象方法,这样可以绕抽象类声明的对象成为其子类对象的上转型对象,并且调用子类重写的方法。
4、看一段代码展示
父类:

public abstract class A {
    public   abstract  void  print();
    public void tell()
    {
        System.out.println("hello,world!");
    }
}

子类

public class B extends A{
    @Override
    public void print() {
        System.out.println("I am a good boy.");
    }

    public static void main(String[] args) {
       A a=new B();//上转型对象
       a.print();
    }

贰、接口

前言:接口的使用,在大型项目里面,非常普遍,将一个接口内的功能定义好,其他类直接通过关键字implements来实现。

1、接口的声明和使用
(1)接口的声明
我们曾使用关键字class来声明类,接口则是通过关键字interface来声明,格式如下:interface 接口的名字
(2)接口体
接口体包含常量定义和方法定义两个部分。接口体中只进行方法的声明,不允许提供方法的实现,所以方法的实现没有方法体。
例如:

interface Printtable
{
final int Max=100;
void add();
float sum(float x,float y);
}

(3)接口的使用
一个类通过关键字implements来声明自己实现一个或者多个接口。如果实现多个接口,则需要用逗号隔开,

class A implements PrintableAddable

大家在这里注意一下,继承下与接口的实现;
如:

class A extends B implements PrintableAddable

如果一个类实现某个接口,就必须实现接口内所有方法,即为这些方法提供方法体。同时保证声明的方法名字,返回值类型,参数个数及类型与接口完全相同。
注意,接口的方法默认为publicabstract,因而接口在声明方法是可以省略前面的publicabstract,但是类在实现接口方法时候就必须用public来实现。
(4)看下面代码
接口:

public interface A {
    void print();//只需要声明方法,无需实现
}

B实现A接口;

public class B implements A{
    @Override
    public void print() {
        System.out.println("I am a good boy.");
    }

    public static void main(String[] args) {
        B a=new B();//上转型对象
        a.print();
    }
}

(5)如果A接口中的所有方法在B中没有实现,会出现什么结果;
在这里插入图片描述
在这里插入图片描述
所有在实现接口时,我们需要将接口内的方法进行重写,即为实现方法。这与前面讲到的继承抽象类相似。

下一章,我们一起来学习接口与抽象类的比较,他们有什么相同,又有什么不同呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java中,类与继承-抽象类有以下几个关键点。首先,继承是指一个类可以继承自另一个类。被继承的类被称为父类/超类/基类,而继承其他类的类被称为子类。继承使得子类可以拥有父类中所有的成员(成员变量和成员方法),从而提高了代码的复用性。 其次,当子类继承自一个抽象类时,子类必须重写父类所有的抽象方法,否则该子类也必须声明为抽象类。最终,必须有子类实现该父类的抽象方法,否则从最初的父类到最终的子类都不能创建对象,失去了继承的意义。 一个示例代码如下: ``` public abstract class Animal { public abstract void run(); } public class Cat extends Animal { public void run() { System.out.println("小猫在墙头走~~~"); } } public class CatTest { public static void main(String[] args) { Cat c = new Cat(); c.run(); } } ``` 在上述代码中,Animal是一个抽象类,其中定义了一个抽象方法run。Cat类继承自Animal类,并且重写了run方法。在CatTest类的main方法中,创建了一个Cat对象并调用了run方法。 更多关于Java类与继承-抽象类的知识,可以参考Java基础教程之接口继承抽象类。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java面向对象基础——继承抽象类](https://blog.csdn.net/qq_42538127/article/details/115426682)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【JavaSe】面向对象篇(六) 抽象类](https://blog.csdn.net/qq_41744145/article/details/100023046)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Java基础教程之接口继承抽象类](https://download.csdn.net/download/weixin_38516270/12808613)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

silence_sz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值