• java面向对象第四章


    一、 接口的基础知识

    1、为什么需要接口

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

    2、什么是接口

    a)   基本概念?

    接口是一种特殊的抽象类

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

    b)   基本语法

    访问修饰符 interface 接口名{

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

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

                                                               数据类型 常量名=值;

    }

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

    c)   注意事项?

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

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

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

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

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

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

    public abstract class Handest {
            private String brand;    //品牌
            private String type;    //型号
            
            public String getBrand() {
                return brand;
            }
            
            public Handest(String brand,String type) {        //有参构造方法
                this.brand = brand;
                this.type=type;
            }
            
            public String getType() {
                return type;
            }
            
            
            public abstract void print();
            public abstract void function();
    }
    
    父类
    public interface Network {
        void surf();        //上网
    }
    
    //接口2
    public interface PlayWiring {
        void play();        //播放功能
    }
    
    //接口3
    public interface TakePictures {
        void takePictures();        //拍照
    }
    
    //接口4
    public interface VideoCall {
            void visualTelephone();        //视频电话
    }
    public class AptitudeHandset extends Handest implements PlayWiring,Network,TakePictures,VideoCall {
    
        public AptitudeHandset(String brand, String type) {
            super(brand, type);
            
        }
    
        @Override
        public void visualTelephone() {
            
            System.out.println("开始视频通话......");
        }
    
        @Override
        public void takePictures() {
            
            System.out.println("咔嚓......拍照成功");
        }
    
        @Override
        public void surf() {
            
            System.out.println("已启动移动网络......");
        }
    
        @Override
        public void play() {
            
           System.out.println("开始播放视频《小时代》......");    
        }
    
        @Override
        public void print() {
            
            System.out.println("这是一款型号为"+super.getType()+""+super.getBrand()+"手机:");
        }
    
        @Override
        public void function() {
            
            System.out.println("发送带图片与文字的信息......");
        }
        
    }
    
    子类
    public static void main(String [] args){
            
            AptitudeHandset a=new AptitudeHandset("I9100","HTC");
            a.print();
            a.surf();
            a.play();
            a.takePictures();
            a.function();
            a.visualTelephone();
        }
    
    测试类

    3、一个类如何实现接口

    class 类名 implements 接口名{

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

    }

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

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

    }

    5、接口的好处?

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

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

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

    相同点

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

     

    不同点:

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

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

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

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

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

    public abstract class Pet {
            private String name;    
            private int  health;
            private int  love;
            
            public Pet(String name,int health,int love){
                this.name=name;
                this.health=health;
                this.love =love;
            }
            public String getName() {
                return name;
            }
            
            public int getHealth() {
                return health;
            }
            
            public int getLove() {
                return love;
            }
            
            public abstract void print();
    }
    
    父类
    //接口1
    public interface Eatable {
        void eat();        //吃饭
    }
    
    //接口2
    public interface FlyingCatchable {
        void catchingFly();        //接飞盘
    }
    public class Dog1 extends Pet implements Eatable,FlyingCatchable{
    
        public Dog1(String name, int health, int love) {
            super(name, health, love);
            // TODO Auto-generated constructor stub
        }
    
        @Override
        public void print() {
            // TODO Auto-generated method stub
            System.out.println("我叫"+super.getName()+",健康值是:"+super.getHealth()+",与主人的亲密度为:"+super.getLove()+"");
        }
    
        @Override
        public void catchingFly() {
            // TODO Auto-generated method stub
            System.out.println("我正在和主人玩飞盘!");
        }
    
        @Override
        public void eat() {
            // TODO Auto-generated method stub
            System.out.println("我正在吃饭!");
        }
    
    }
    
    子类
    public class PetText {
        public static void main(String [] args){
            Dog1 d=new Dog1("好好",90 ,95);
            d.print();
            d.eat();
            d.catchingFly();
                }
    

      

    二、  面向接口编程

    1、接口表示一种能力

    2、接口表示一种约定

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

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

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

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

  • 相关阅读:
    mysql修改数据库的存储引擎(InnoDB)
    如何查看进程/服务是否启动
    Spark Streaming 入门
    Graphlab create的基本使用
    构建房屋预测回归模型
    构建应用深层特征的图像检索系统
    构建商品评价的分类器
    Elastic Static初识(01)
    《Linux就该这么学》笔记(二)
    《Linux就该这么学》笔记(一)
  • 原文地址:https://www.cnblogs.com/yjx4671/p/7019575.html
Copyright © 2020-2023  润新知