⚔疯狂输出⚔ 抽象类 与 接口 快速理解二者的特点和两者的区别
来源:互联网 发布:淘宝网大毛衣外套 编辑:程序博客网 时间:2024/05/17 05:01
抽象类
什么是抽象 抽象就是 表达一种事物但是这种事物不能非常直接的描述出来
抽象类就是说 这个类很抽象不能直接描述出来他具体可以实现的功能。
要用使用抽象类 必须要用关键词 abstract
当 abstract 修饰类的时候 这个类就叫做抽象类
抽象类
`abstract class name {}`
当 abstract 修饰方法的时候这个方法就叫做抽象方法
抽象方法
public abstract void eat();
抽象方法中没有实现的部分所以没有这一对{ }
我们写一个普通的成员方法
public static vooid eat(){system.out.println();}
我们在学多态的时候我们都是用子类的一个方法去重写一个父类的方法
然后输出一个值。
注意:抽象类中 的抽象方法会强制子类去重写抽象方法
注意:抽象类不能实例化对象 也就是说抽象类中不可以创建对象。
我们下面来一起写一个例子
题目 动物类 吃 猫吃 鱼
public class Demo01{public static void main(String[]agrs){}}abstract class Animas{ //写一个抽象类//写一个抽象方法 public abstract void eat(); //空的抽象方法 为什么是空 是因为抽象方法没有方法体。因为他是抽象的不可以解决具体的事情}//写一个子类class Cat extends Animas{public void eat(){ //抽象方法的重写System.out.println("猫吃鱼")}}
抽象类中的成员变量
抽象类中成员变量:可以有变量 也可以有常量
抽象类中成员方法 : 有成员方法 也有抽象方法
抽象类中构造方法: 有有参的构造方法 也有无参的构造方法
接下来我们写一个抽象类 看看上面的是否成立
还是以动物 名字 吃
猫吃鱼为例子
public class Demo02{public static void main(String[]agrs){ Animas animas = new Cat(); animas.eat();}}abstract class Animas { //写一个抽象类 String name;//写一个抽象方法public abstract void eat();public Animas(){ //无参构造方法}public Animas(string name){ //有参构造方法this.name = name;}}class Cat extends Animas{ // 猫继承动物的基础属性public Cat(){ //无参构造方法}public Cat(String name){//有参的构造方法 super.name= name;}public void eat(){ //抽象类强制会强制子类重写抽象类的抽象方法System.out.println(“猫吃鱼”);}}//注意 抽象类的子类 必须重写 所有抽象类中抽象方法
根据上面的代码还有文字其实我们可以总结出一句话。
抽象类中不一定有抽象方法,但是抽象方法一定在抽象类中!!!
上面我们说了 abstracr作用他的具体作用到底是什么 ?
禁止创建抽象类的对象出来,必须使用用子类。
那么一个类中没有抽象方法,他可以不可以定义为抽象类?如果可以他的作用是什么?
可以 上面的话说了抽象类中不一定有抽象方法 但是抽象方法一定在类中。抽象方法是禁止抽象类创造抽象对象出来。
那么 abstract 不能和哪些关键字并存呢?
1.static和abstracr 为什么不能并存?
原因:static 随着类的加载类加载 所以调用方法要是使用类名 abtract 修饰的抽象类 禁止生成对象 也没有抽象方法的方法体没办法调用。 没有实现的部分 只有声明的部分 调用不到 没有任何关系 所以不能并存
2.final和abstract为什么不能并存?
因为 final 自身的属性 修饰类的时候 不能被继承 修饰变量的时候不能被修改 修饰方法的时候不能被重写 而abstract 要强制 子类去重写抽象方法 所以这很冲突 他们两个所以不能并存
3.private和 abstrtic为什么不能并存?
因为被private修饰的只能本类的对象访问 子类是访问不到的 所以子类无法重写被private隐藏的父类方法,所以他们两个也不能并存。
接下来我们讲接口
接口我们生活中的接口是什么 ?
我的 理解我们生活的接口 想要使用 他必须是同属性的接口 并且 接口可以让属性本身的能力更强壮 但是你想在接口上添加东西要符合他的规则 所以说接口不同规则组成的一个大规则。他还是一个规则!
接口主要能干什么?
利用规则去接通某些功能在接通后要有数据的交换才能实现功能的顺利使用呢
那广义的说 接口就是规则
狭义的说 接口就是交换数据的一道门他需要一把同型号的钥匙打开这个规则就是钥匙。
接下里我们看看如何定义一个接口
关键字 interface 接口名 {} 是不是和类从命名方式相同但是请大家记住 接口不是一个类
接口有什么特点呢?
1.在接口中只能声明一个 抽象类
2.接口中只有常量没有变量 当你在声明一个变量时系统会在变量前面默认添加 public static final 这两个关键字来修饰这个变量 让他成为常量
所以说当我们刚学不就的人最好是把 默认的这个三个public static final 自己写上 这样不容易混淆 他是一个常量而不是一个变量
3.接口不能实例化对象 也就是刚刚说的禁止创建一个对象 。那接口怎么使用呢?
是谁使用接口 谁就去实现接口中的方法
4.接口的使用 想使用一个接口必须要使用关键字 implement 关键字
5.在接口的抽象方法 如果你不写 public abstract 系统前面会默认给你添加 所以和上面一样 新手最好把这个 public abtract 自己写上 加深记忆 也不会混淆 知识点。
接口中的成员变量 成员方法 构造方法
1.成员变量
我们上面说过了 public static final 这个三个关键字是系统默认的刚学的人一定要自己写上
2.抽象方法
我们上面也说了 public abstract 这个两个关键字也是系统默认的刚学的人一定要自己写上
并且 接口中没有成员方法 只有抽象方法
3.构造方法
还记得我们上面说的嘛?抽象类没有构造方法 这里只能用抽象类声明 所以也没有构造方法!
类和类是什么关系?
类是不是只能 单继承 和多层继承 没有多继承?
所以说类和类之间的关系就是 只能单继承 和多层继承 不能多继承
类和接口的关系
类和接口的关系是 实现关系 类实现接口。 可以但实现 也可以多实现。
接口和接口的关系
接口和接口之间的关系 就是单继承 也可以多继承 注意 :千万不要和类和类之间的关系记混了!!!
下面我们来写一个接口
public class Demo01{public static void main (string[]agrs){ IndexA index = new person (); //父类的引用指向子类的对象 index.print(); //调用子类对象的方法 System.out.println("Index.num"); //接口的常量}}interface IndexA{ //创建一个接口public static fainl int num= 0;//给接口常量赋值public abstract void print(); //抽象方法}class Person interface IndexA{ //继承public void print(){ //强制子类去重写抽象方法System.out.println(""); //打印}}
接口 和抽象类的区别
接口
成员变量
只有常量 用 public static final 修饰
成员方法
有 static 修饰的静态成员方法 有默认的成员方法 有抽象方法
构造方法
接口中没有构造方法
接口不是一个类
抽象类
成员变量
有成员变量 有常量
成员方法
有成员方法 有抽象方法
构造方法
抽象类中有构造方法
抽象类只是类中的一种特殊形式 所以他还是一个类
- ⚔疯狂输出⚔ 抽象类 与 接口 快速理解二者的特点和两者的区别
- 抽象类和接口以及二者的区别
- 根据实例理解Java中的抽象类和接口,以及两者的区别
- Java中的抽象类与接口的特点和区别
- 抽象类及接口(两者的区别)
- 对java接口和抽象类的理解与区别
- 深入理解Java的接口和抽象类---接口与抽象类的区别
- 继承、抽象类和接口的特点与关系
- 关于接口与抽象类的特点
- 关于接口与抽象类的特点
- C#接口和抽象类的特点
- 抽象类和接口的特点
- 总结接口的基本特点浅谈接口和抽象类的区别
- 快速记忆java抽象类和接口的区别
- 充分理解Java的接口和抽象类的区别
- 接口和抽象类的区别、抽象方法的一些特点、抽象类是否可继承实体类(concrete class)
- 抽象类与接口的区别(个人理解)
- 深刻理解 抽象类与接口之间的区别
- httpclient
- 惯性离心机概述
- singleton pattern
- 【TensorFlow】会话session(三)
- 把两个有序链表合并为一个有序链表(注意空指针异常!)
- ⚔疯狂输出⚔ 抽象类 与 接口 快速理解二者的特点和两者的区别
- 模拟登陆
- C++运算符重载
- Linux系统之iscsi
- 统一的分布式数据库和文件系统mongodb,及其用于解决aliyun上做站的存储成本方案
- 对hbase进行增删改查的操作实例
- JDK不同操作系统的FileSystem(Windows&Unix-like)
- java的抽象与接口
- dfs深度优先收搜