zoukankan      html  css  js  c++  java
  • java面向对象 4

    一、   接口的基础知识

    1、为什么需要接口

    为解决实际应用中,单一继承无法解决的问题

    2、什么是接口

    a)   基本概念?

    接口是一种特殊的抽象类

    接口是一种规范和标准,可以约束类的行为,是一些方法特征集合,但方法没有方法体

    b)   基本语法

    访问修饰符 interface 接口名{

                       //定义 方法(没有方法体),方法的访问修饰符默认为public

                       //定义 属性(默认是公共的静态的常量)

                                         数据类型 常量名=值;

    }

    访问修饰符只能为public和默认的

    c)   注意事项?

    1.接口命名,接口字必须和文件名相同

    2.接口中的方法没有方法体

    3.接口中的属性名必须大写,且要赋值

    4.接口不能实例化,没有构造方法

    5.接口支持多重继承,一个接口可以继承多个接口,但不能继承类

    6.接口中的方法,必须被所有实现接口的类具体实现

    3、一个类如何实现接口

    class 类名 implements 接口名{

        //必须对接口中的方法,具体实现

    }

    4、一个类如何继承另外一个类,且同时实现一个接口【变相的让1个类实现多重继承】

    class 子类名 extends 父类名 implements 接口1,…接口n{

       

    }

    5、接口的好处?

    接口体现了约定和实现相分离的原则

    弥补了Java类单一继承的不足,有利于代码的扩展和维护

    6、 抽象类和接口的异同点?【常见笔试题】

    相同点

    1. 1.  二者都不可以实例化
    2. 2.  二者都包含抽象方法,必须被非抽象的子类重写或实现
    3. 3.  二者都可以用来实现多态

     

    不同点:

    1、 抽象类只能单一继承,而接口可以支持多重继承

    2、 抽象类中除抽象方法外,还可以有非抽象的方法;接口中的方法只能是抽象方法

    3、 抽象类可以有构造方法,接口没有

    4、 抽象类中的变量可以不赋值,接口中的变量必须赋值

    5、 抽象类中可以定义静态方法,接口不可以

    二、    面向接口编程

    1、接口表示一种能力

    2、接口表示一种约定

    3、面向接口编程的好处?

    a)   实现接口和实现的分离

    b)   可以降低代码间的耦合性

    c)   提高程序的可扩展性和可维护性

     1 public abstract class Handest {
     2         private String brand;    //品牌
     3         private String type;    //型号
     4         
     5         public String getBrand() {
     6             return brand;
     7         }
     8         
     9         public Handest(String brand,String type) {        //有参构造方法
    10             this.brand = brand;
    11             this.type=type;
    12         }
    13         
    14         public String getType() {
    15             return type;
    16         }
    17         
    18         
    19         public abstract void print();
    20         public abstract void function();
    21 }
    父类
    public interface Network {
        void surf();        //上网
    }
    //接口2
    public interface PlayWiring {
        void play();        //播放功能
    }
    //接口3
    public interface TakePictures {
        void takePictures();        //拍照
    }
    //接口4
    public interface VideoCall {
            void visualTelephone();        //视频电话
    }
     1 public class AptitudeHandset extends Handest implements PlayWiring,Network,TakePictures,VideoCall {
     2 
     3     public AptitudeHandset(String brand, String type) {
     4         super(brand, type);
     5         
     6     }
     7 
     8     @Override
     9     public void visualTelephone() {
    10         
    11         System.out.println("开始视频通话......");
    12     }
    13 
    14     @Override
    15     public void takePictures() {
    16         
    17         System.out.println("咔嚓......拍照成功");
    18     }
    19 
    20     @Override
    21     public void surf() {
    22         
    23         System.out.println("已启动移动网络......");
    24     }
    25 
    26     @Override
    27     public void play() {
    28         
    29        System.out.println("开始播放视频《小时代》......");    
    30     }
    31 
    32     @Override
    33     public void print() {
    34         
    35         System.out.println("这是一款型号为"+super.getType()+""+super.getBrand()+"手机:");
    36     }
    37 
    38     @Override
    39     public void function() {
    40         
    41         System.out.println("发送带图片与文字的信息......");
    42     }
    43     
    44 }
    子类
     1 public static void main(String [] args){
     2         
     3         AptitudeHandset a=new AptitudeHandset("I9100","HTC");
     4         a.print();
     5         a.surf();
     6         a.play();
     7         a.takePictures();
     8         a.function();
     9         a.visualTelephone();
    10     }
    测试类
  • 相关阅读:
    在CentOS7上搭建MySQL主从复制与读写分离
    数据库 引擎
    数据库 事务
    数据库 索引
    MYSQL
    基于mysqld_multi实现MySQL 5.7.24多实例多进程配置
    09 引导过程与故障修复
    chapter 8.3
    作业 8.1
    Chapter 04 作业
  • 原文地址:https://www.cnblogs.com/alhy/p/7017541.html
Copyright © 2011-2022 走看看