JAVA 继承基本类、抽象类、接口介绍

时间:2022-11-11 00:09:40 

封装:就是把一些属性和方法封装到一个类里。
继承:就如子类继承父类的一些属性和方法。
多态:就如一个父类有多个不同特色的子类。
这里我就不多讲解,下面我主要说明一个继承。继承是OOP(面向对象)的一个特色,java只支持单继承(如果继承两个有同样方法的父类,那么就不知道继承到那个父类的,所以java只支持单继承)。继承是java的一个特色,我们用的所以类都继承Objict类,所以就要Object类的方法,如toString()、getClass()、wait()……所以我们建立的类都有父类。

Java中一般有三种类:

基本类:也就是一般的类(一般所说的类就是基本类),是对象的模板,是属性和方法的集合。可以继承其他基本类、抽象类、实现接口。
抽象类:有抽象方法的类(抽象方法就是该方法必须由继承来实现,本身只定义,不实现)。抽象类可以有一个或多个抽象方法,他是基本类和接口类的过度。
接口类:一般叫做接口,该类中的所有方法都是抽象方法,该类的方法本身只定义不实现。
抽象类和接口一个由【abstract class + 抽象类名】一个由【interface +接口名】定义,接口中的所以方法都是抽象方法,而抽象类有部分方法是自身实现了的,一些只定义不实现。

基本类的定义:


public class Fruit {
public void price() {
System.out.println("水果价格");
}
public void weight() {
System.out.println("水果重量");
}
}


抽象类的定义:


public abstract class Fruit {
public void price() {
System.out.println("水果价格");
}
public abstract void weight();
}


接口类的定义:


public interface Fruit {
public void price();
public void weight() ;
}


从上面我们可以看出接口就是抽象类的升级版,由于该类的方法全是抽象方法,所以把abstract换成interface。而接口的方法必须由子类才能实现。
继承

继承基本类,可以继承父类的方法,也可以从些,也可以扩充。下面是实现接口基本类的类:


public class Apple extends Fruit {

}


该类中就有Fruit基本类中的两个方法:price()和weight();

继承抽象类,必须实现抽象类的抽象方法,可以修改父类的方法,和添加方法。下面是继承抽象类的类:


public class Apple extends Fruit {
@Override
public void weight() {
System.out.println("水果重量");
}
}


该类继承类Fruit的price()方法,同时实现了Fruit抽象类的weight()方法。
继承接口类(也就实现接口),必须实现接口类的所有的抽象类和添加了。下面是继承接口的类:


public class Aple implements Fruit {
@Override
public void price() {
System.out.println("水果价格");
}
@Override
public void weight() {
System.out.println("水果重量");
}
}



该类是实现Fruit接口的所以抽象方法。

Java只支持单继承(继承基本类和抽象类),但是我们可以用接口来实现(多继承接口来实现)
如:public class Apple extends Fruit implements Fruit1, Fruit2{}
一般我们继承基本类和抽象类用extends关键字,实现接口类的继承用implements关键字。其实继承是很简单的,可以就是没有弄清这两个关键字,当我们弄清楚也就是比较简单的。

接口也可以继承接口如:public interface Fruit1 extends Fruit {}这是接口中的多重继承,同理抽象类和基本类也同理。如果我们把基本类添加final修饰,也就定义该类不被继承,该类不能作为父类。同时基本类的方法可以用public 、private、proptected来修饰方法,用final来阻止继承该方法。

这里只是自己的理解,有些地方时用词不当的,只是觉得这样用词更好的理解,请大家谅解。有些地方由于不是这里的重点,没有讲清楚,希望大家通过其他方式了解。

标签:基本类,抽象类,接口
0
投稿

猜你喜欢

  • flutter实现底部不规则导航栏

    2023-03-03 04:33:08
  • 详解Android中Notification通知提醒

    2023-09-10 09:57:19
  • Java数据结构之AC自动机算法的实现

    2023-08-31 07:23:57
  • Java 守护线程_动力节点Java学院整理

    2023-11-28 07:51:14
  • Mybatis Plus中的流式查询案例

    2023-08-18 16:35:13
  • spring data jpa 查询自定义字段,转换为自定义实体方式

    2022-10-12 04:52:43
  • 解决Java调用BAT批处理不弹出cmd窗口的方法分析

    2022-03-09 17:34:02
  • C#实现简单获取及设置Session类

    2021-07-09 06:19:27
  • java编写的文件管理器代码分享

    2023-11-20 13:28:52
  • C++与namespace有关的两个编译错误的讲解

    2021-12-09 11:37:35
  • C#窗口实现单例模式的方法

    2022-11-03 15:08:23
  • Springboot+Netty+Websocket实现消息推送实例

    2022-03-24 09:29:29
  • java多线程入门知识及示例程序

    2021-11-30 03:17:58
  • Android通过AIDL在两个APP之间Service通信

    2022-04-15 23:58:27
  • 浅谈几种常见语言的命名空间(Namespace)

    2022-11-13 12:17:42
  • C# 多线程中经常访问同一资源可能造成哪些问题

    2022-09-08 05:22:47
  • 关于C#委托三种调用的分享使用

    2022-10-29 03:24:35
  • 基于Lucene的Java搜索服务器Elasticsearch安装使用教程

    2022-05-31 05:05:10
  • Logback日志基础及自定义配置代码实例

    2022-09-04 01:01:41
  • 基于android中的各种颜色在drawable.xml中的值详解

    2022-03-30 01:56:18
  • asp之家 软件编程 m.aspxhome.com