zoukankan      html  css  js  c++  java
  • 抽象类与接口概念及代码实例

    此文转载自:https://blog.csdn.net/CSDN9825/article/details/110140050#commentBox

    一.java抽象类
    抽象类针对的是类.包含抽象方法的类称为抽象类,但抽象类中可以没有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。抽象类有以下几个特点
      1.抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
      2.抽象类不能用来创建对象,它是一个没有足够信息去实例化的类;
      3.如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则子类也必须为abstract抽象类。
    代码实例如下:
    1.创建面积的抽象类

    package cn.zc.抽象类求面积;
    
    public abstract class Shape {
        public Shape(){
            super();
        }
    //    抽象类形状
        abstract double getArea();
    }
    

    2.矩形面积类继承抽象类面积

    package cn.zc.抽象类求面积;
    //矩形
    public class Rectangle extends Shape{
    
        private double height;
        private double width;
    
        public Rectangle(double height, double width) {
            this.height = height;
            this.width = width;
        }
    
        @Override
        double getArea() {
            return height*width;
        }
    }
    
    

    3.圆形面积继承抽象类面积

    package cn.zc.抽象类求面积;
    //圆形
    public class Circular extends Shape{
        private Double r;
        final double PI=3.1415926;
        @Override
        double getArea() {
            return PI*r*r;
        }
    
        public Circular(Double r) {
            this.r = r;
        }
    }
    
    

    4.主函数

    package cn.zc.抽象类求面积;
    
    import java.util.Scanner;
    
    public class Test {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入长:");
            double h = scanner.nextDouble();
            System.out.println("请输入宽:");
            double w = scanner.nextDouble();
            System.out.println("请输入半径:");
            double r = scanner.nextDouble();
            Shape S = new Rectangle(h, w);
            System.out.println("长方形的面积是:" + S.getArea());
            S = new Circular(r);
            System.out.println("圆形的面积是:" + S.getArea());
        }
    }
    
    

    5.输出结果:
    在这里插入图片描述

    延伸:java的访问修饰符有四个:public,protected,private,默认(不写修饰符),这四个访问修饰符定义的类的作用范围
    在这里插入图片描述
    二.java接口
    java接口针对的是行为(方法)
    1、Java接口中的成员变量默认都是public,static,final类型的,java接口中只包含常量和未实现的方法,常量必须在接口定义时初始化.
    2、Java接口中的方法默认都是public,abstract类型的,没有构造方法,不能被实例化
    3、一个接口不能实现(implements)另一个接口,但它可以继承多个其它的接口
    4、Java接口中只有抽象方法,必须通过类来实现它的抽象方法
    5、当类实现了某个Java接口时,它必须实现接口中的所有抽象方法,否则这个类一定为抽象类
    6、一个类只能继承一个直接的父类,但可以实现多个接口,间接的实现了多继承.
    代码实例如下:
    1.定义接口

    package cn.zc.Usb接口;
    //定义接口
    public interface Usb {
        public void read();
        public void wirte();
    }
    
    

    2.定义华为类并实现Usb接口

    package cn.zc.Usb接口;
    
    public class HuaWei implements Usb{
    
        @Override
        public void read() {
            System.out.println("华为U盘正在读取");
        }
    
        @Override
        public void wirte() {
            System.out.println("华为U盘正在写入");
        }
    }
    
    

    3.定义苹果类并实现Usb接口

    package cn.zc.Usb接口;
    
    public class Apple implements Usb {
        @Override
        public void read() {
            System.out.println("苹果U盘正在读取");
        }
    
        @Override
        public void wirte() {
            System.out.println("苹果U盘正在写入");
        }
    }
    
    

    4.主函数

    package cn.zc.Usb接口;
    
    public class Test {
        public static void main(String[] args) {
            HuaWei h = new HuaWei();
            h.read();
            h.wirte();
            Apple a = new Apple();
            a.read();
            a.wirte();
        }
    }
    
    

    5.实现主函数
    在这里插入图片描述

    三.两者的异同
    1.接口只能包含抽象方法,抽象类可以包含普通方法。
    2.接口只能定义静态常量属性,抽象类既可以定义普通属性,也可以定义静态常量属性。
    3.接口不包含构造方法,抽象类里可以包含构造方法。
    4.java接口和抽象类一样不能创建自己的对象。

       

    更多内容详见微信公众号:Python研究所

    Python研究所

  • 相关阅读:
    Windows共享作为公司文件服务器的案例
    关于限制域用户登陆计算机的几点总结
    防止加入域主机脱离域的控制(管理员权限)
    域组策略禁止执行指定软件
    域用户执行金蝶K/3报错解决方法
    WinXP/Win7/Win8本地用户配置文件迁移至域用户
    Windows批处理:请求远程协助
    浅谈JavaScript闭包
    新蛋那几月
    JavaScript 32位整型无符号操作
  • 原文地址:https://www.cnblogs.com/phyger/p/14047750.html
Copyright © 2011-2022 走看看