ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2022/7/26 第七组陈美娜 抽象/接口

2022-07-29 21:35:22  阅读:124  来源: 互联网

标签:26 子类 接口 抽象 2022 抽象类 方法 public 组陈美娜


 
abstract关键字:抽象
public abstract class Abstr01 {

  public abstract void show();
}

抽象方法:public abstract void eat(); 默认值可以省略为void eat();

不用写方法体,无大括号,无方法体

有大括号一 定没有抽象方法

  1. 抽象方法必须在抽象类里

    2.当定义一个抽象类,里面的结构有:属性,成员方法,构造器,抽象方法,常量

    3.abstract存在的意义:约定:自定义规则

    4.规则:约定了返回值,访问权限,参数列表,需要子类在重写的时候去定义方法体

  2. 约定大于配置,配置大于编码(写代码)

    6.抽象类可以没有抽象方法,没有抽象方法的话没必要再用抽象

    *7.抽象类的构造器存在的意义(不能创建对象,可以间接创建,接口则不行):

为了约定子类的构造器必须与父类所匹配

8.抽象类不能被实例化,抽象类不能创建对象

9.抽象了没有方法体的方法后一定要创建它的子类重写构造体

*10.一个类如果继承了一个抽象类,就必须重写这个抽象类所有的抽象方法

11.抽象中定义抽象方法时,抽象方法要写全 public abstract void eat();接口可以省略掉,直接写void eat;

总结:1.抽象方法是必须是public或者protected.

2.抽象类不能被直接实例化,需要依靠子类采用向上转型的方式处理

3.抽象类必须有子类,使用extends,一个类只能继承一个抽象类

* 4.子类(如果不是抽象类)则必须重写抽象类中的所有抽象方法,如果不想重写抽象方法,把子类也变成抽象类就行

 

6 接口interface关键字
public interface ch02

比抽象还抽象,*接口中只能定义抽象方法(不能有属性,不能有方法)通过实现,接口来【jdk1.7之前】

[jdk8之后]除了抽象方法外还能放默认方法,静态常量和静态方法

//静态常量
Public static final String NAME="张三"
//抽象方法
public abstract void breath();
//静态方法
public static void show(){}
//默认方法
default void info(){}    

开发中,基本上常量的声明都是public,static,final

只有静态方法不能被重写,因为静态方法没有重写(访问权限必须大于等于被重写的)

接口中的变量都大写

接口中定义的基本都常量

接口中结构的特点:

接口中的结构必须是public

  • 接口中的方法默认是public,abstract,推荐直接省略

  • 接口中的常量默认是public,static,final,推荐省略

实现implement
  • A类implements接口,就说A类是B类的实现类

  • *如果一个类实现了一个接口,他就需要重写所有的抽象方法

  • *实现接口是可以多实现的,继承只能单继承

开发中,如果一件事情可以通过继承和接口来解决问题,优先选择接口

面试题:
1.继承抽象类和实现接口的异同:

继承抽象类,必须重写抽象类中所有抽象方法。

实现接口则必须实现接口中的所有方法。(接口中的方法均为抽象方法

  1. 抽象类和接口的区别:

    1、类要被子类继承,接口要被子类实现。 2、接口里不能定义普通变量,而抽象类中可以,接口只能定义公共的静态常量。 3、抽象类里可以没有抽象方法,可以有普通方法,就算全是普通方法也没关系。 4、普通类和抽象类(它的实例化方式并不是通过普通的new方式来创建对象,而是通过父类的应用来指向子类的实例间接地实现父类的实例化,因为子类在实例化之前,一定会先实例化它的父类。)可以实例化,

    接口不可以实例化(可以通过他的实现类来调用接口方法)。

面向对象编程

面向接口编程:主要写接口

sql,写实现类,测试类,

面向切面编程

java只有单继承?java类与类之间只有单继承

java种存在着多继承的,发生在接口之间

public interface A extends B,C,D {}                                  //接口A,是B,C,D的子接口

 

匿名实现类(下午40分)
// Ch01 ch01 = new Ch01();类的命名
//且类名ch01是 后面new Ch01新创的空间的地址
Abstr01 a01 = new Abstr01() //这是没创建名字的时候
{ @Override              //从左到右,父类到子类,接口到实现类
   public void show() {    //在类里构造的方法
       System.out.println("重写过后的show方法...");
  }
    };
//a01.show();会输出函数
Abstr01 abstr02 = new Ch02();//创建对象名的时候
栈和队列:
* 栈和队列是两种操作受限的线性表。
* 这种受限表现在:
* 栈的插入和删除只允许在表的尾端进行(在栈中叫做“栈顶”),满足FILO
*     First In Last Out;
* 队列只允许在表位插入元素,在表头删除元素,FIFO First In First Out
*
* 栈与队列的相同点:
* 1.都是线性结构
* 2.插入操作都是在表尾进行
* 3.都可以通过顺序结构和链式结构实现。
*
* 栈与队列的不同点:
* 1.队列,先进先出,栈先进后出

 

标签:26,子类,接口,抽象,2022,抽象类,方法,public,组陈美娜
来源: https://www.cnblogs.com/nanaxin/p/16533599.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有