抽象类

  1.当类和对象被abstract修饰符修饰的时候,就变成抽象类或者抽象方法。抽象方法一定要在抽象类中,抽象类不能被创建对象,如果需要使用抽象类中的抽象方法,需要由子类重写抽象类中的方法,然后创建子类对象来调用。需要注意的是,子类如果只重写了一部分抽象方法,那么该子类还是一个抽象类,如果抽象类中的方法要被使用,子类必须重写抽象类中所有的抽象方法。

  2.引进抽象类的原因:把多个共性的东西提取到一个类中,这是继承的做法。 但是呢,这多个共性的东西,在有些时候,方法声明一样,但是方法体。也就是说,方法声明一样,但是每个具体的对象在具体实现的时候内容不一样。所以,我们在定义这些共性的方法的时候,就不能给出具体的方法体。而一个没有具体的方法体的方法是抽象的方法。在一个类中如果有抽象方法,该类必须定义为抽象类。

  3.成员的特点:①成员变量:有变量,有常量;②有构造方法;③成员方法:有抽象方法,有非抽象方法。

  4.常见问题:①抽象类有构造方法,但是不能实例化,那么构造方法的作用就体现在:用于子类访问父类数据的初始化;
        ②一个类中没有抽象方法,却定义成抽象类,作用是为了不让该类创建对象;
        ③不能和abstract共存的关键字:final(冲突),private(冲突)和static(无意义)。

接口概述

  接口其实是一个特殊的抽象类,当抽象类中所有的方法都是抽象方法时,可通过接口的的形式来体现。Java中使用interface来定义接口,接口中只能出现public访问修饰符。接口中成员的格式如代码示例:

 interface Person{
public static final String NAME="张三";
public abstract void eat(); //抽象方法没有方法主体
}

其中上面成员中的修饰符public static fianl和abstract在接口中就算不写也是默认存在的。接口不可以被创建对象,因为里面有抽象方法,需要被子类实现,子类对接口中所有的抽象方法实现后,子类才能够实例化,否则子类只是一个抽象类。

接口的应用

  在继承中提到,Java是不支持多继承的,但是保留了这种机制,并且用另一种体现形式来完成表示,那就是多实现(implements)。代码示例:

 //用interface创建两个接口
interface Run{
public abstract void run();
} interface Game{
void computerGame(); //这里默认自动补全public和abstract
} //用implements实现多个接口,为多实现
class Hobby implements Run,Game{
public void run(){ //这里必须要有public修饰,因为default权限小于接口方法中的public
System.out.println("跑步");
}
public void computerGame(){ //必须要把实现过来的方法全部重写
System.out.println("游戏");
}
} public class Test {
public static void main(String[] args) {
Hobby h = new Hobby();
h.run();
} }

继承和实现对于类与接口的关系:
1.类与类之间:继承关系
2.接口与类之间:实现关系
3.接口与接口之间:继承关系,接口与接口是可以有继承关系的,当一个类要实现一个继承了另一个接口的接口时,必须把父接口中的方法也重写。

接口的作用

  接口可以提高功能的可扩展性,因为它降低了事物与事物之间的耦合性。如代码示例:

 class Person{
String name;
int age;
} interface Smoket{
public abstract void smoket();
} class Student extends Person{ } class Worker extends Person implements Smoket{
public void smoket(){
System.out.println("吸烟");
}
} public class Test {
public static void main(String[] args) {
Worker w = new Worker();
w.smoket();
} }

父类Person中定义的是多个类中共性的基本功能,接口中定义的是扩展功能,是可有可无的功能,可以在需要的时候再定义使用。以此降低了类与类之间的耦合性,相当于早年电脑的CPU和主板无法分离,无法单独更换CPU,接口的作用就是降低了这种耦合性,使得程序更加灵活,团队写项目的时候不会因为这个功能没有完成就不能开始另一个功能。

Java自学手记——接口的更多相关文章

  1. Java自学手记——struts2

    struts2框架 struts2是一种基于MVC模式的框架,是在struts1的基础上融合了xwork的功能. struts2框架预处理了一些功能: >请求数据自动封装, >文件上传的功 ...

  2. Java自学手记——servlet3.0新特性

    servlet3.0出来已经很久了,但市场上尚未普遍应用,servlet3.0有三个比较重要的新特性:使用注解来代替配置文件,异步处理以及上传组件支持. 支持servlet3.0的要求:MyEclip ...

  3. Java自学手记——泛型

    泛型在集合中的应用 泛型在集合经常能看到,有两个好处:1.把运行时出现 的问题提前至了编译时:2.避免了无谓的强制类型转换. 用法:两边泛型的类型必须相同,可允许一边不写,只是为了兼容性,并不推荐. ...

  4. Java自学手记——Java中的关键字

    Java中的一些关键字对于初学者来说有时候会比较混乱,在这里整理一下,顺便梳理一下目前掌握的关键字. 权限修饰符 有四个,权限从大到小是public>protected>defaul(无修 ...

  5. Java自学手记——多态

    对象转型 学习多态前先明白一个叫对象转型的概念,如: class Animal{ void sleep(){ System.out.println("睡觉"); } } class ...

  6. Java自学手记——注解

    注意区分注释和注解,注释是给人看的,注解是给程序看的. 注解的作用是代替配置文件,在servlet3.0中,就可以不再使用web.xml文件,而是所有配置都是用注解!比如注解类 @WebServlet ...

  7. Java自学手记——集合

  8. Java自学-集合框架 List接口

    ArrayList与List接口 步骤 1 : ArrayList和List ArrayList实现了接口List 常见的写法会把引用声明为接口List类型 注意:是java.util.List,而不 ...

  9. 【转】JAVA自学之路

    JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...

随机推荐

  1. 开涛spring3(6.1) - AOP 之 6.1 AOP基础

    6.1.1  AOP是什么 考虑这样一个问题:需要对系统中的某些业务做日志记录,比如支付系统中的支付业务需要记录支付相关日志,对于支付系统可能相当复杂,比如可能有自己的支付系统,也可能引入第三方支付平 ...

  2. Android6.0-运行时权限处理

    为什么需要有运行时权限? 大家都知道在Android6.0之前,权限在应用安装过程中只询问一次,以列表的形式展现给用户,如果点击取消(即不认可应用所申请的权限),则会取消应用的安装.而用户出于安装应用 ...

  3. 文字在div中居中

    话不多说,看代码 div class="div1"> <span class="span2">等级分类法拉盛说的分离卡萨丁</span& ...

  4. 【小练习01】CSS--PS提示框制作

    要求用css和HTML实现下图效果: 代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8& ...

  5. 移动端设置fixed布局的问题解决

    最近写移动端,遇到一个问题就是用fixed属性布局的时候由于手机的原因会出现很多问题,比如说手机端底部固定一块,然后里面有输入框,(类似于手机QQ或者微信底部的输入框一样的布局)这个时候在调用软键盘的 ...

  6. dedecms搜索提示"关键字不能小于2个字节!"

    在测试自己制作的搜索页模板时,如果遇到搜索时提示"关键字不能小于2个字节!"!打开plus/search.php把   if(($keyword=='' || strlen($keyword)< ...

  7. Mac OSX 搭建 Apache php mySql phpMyAdmin 开发环境

    基本环境和配置 Mac 系统:  OS X EI Caption  10.11.4 当前Mac用户名: ceshi 需要熟知的几个基本概念和操作: 1. 新建一个终端默认的是路径是: /Users/当 ...

  8. JavaScript设计模式_05_发布订阅模式

    发布-订阅模式,定义了对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都将得到通知.发布-订阅模式是使用比较广泛的一种模式,尤其是在异步编程中. /* * pre:发布-订阅 ...

  9. JQuery与js具体使用的区别(不全,初学)

    jQuery能大大简化Javascript程序的编写 要使用jQuery,首先要在HTML代码最前面加上对jQuery库的引用,比如: <script language="javasc ...

  10. 利用Excel做一些简单的数据分析

    先来几个原始数据的截图,如下所示: 示例图就举一个吧,因为这些数据量还挺大的,大概的总结了一下,这下列这几栏中不合规范的数据占比很大: (1)民族(经分析,在此表中所涉及到的民族分别为:汉族,满族,蒙 ...