oop_day06_抽象类、接口_20150814

2024-06-14 01:32

本文主要是介绍oop_day06_抽象类、接口_20150814,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

oop_day06_抽象类、接口_20150814


1.static final常量:

   1)必须声明同时初始化,不能修改,类名点来访问

   2)常量名建议所有字母都大写

   3)编译器编译时会直接替换为具体的值---效率高

代码示例:

package oo.day06;
//static final常量
public class StaticFinalDemo {public static void main(String[] args) {//Aoo.NUM = 250; //编译错误,常量不能修改//System.out.println(Aoo.NUM);//1.方法区中加载Boo.class//2.将NUM1存储在方法区中//3.去方法区中获取NUM1的值并输出System.out.println(Boo.NUM1);//编译器在编译时直接被替换为具体的值,效率高//等价于System.out.println(6);System.out.println(Boo.NUM2);}
}
class Boo{public static int NUM1 = 5; //静态变量public static final int NUM2 = 6; //常量
}class Aoo{public static final int NUM = 5; //常量//public static final double PI; //编译错误,必须声明同时初始化
}


2.抽象方法

   1)由abstract修饰

   2)只有方法的定义,没有方法的实现(连大括号都没有)

3.抽象类:

   1)由abstract修饰

   2)包含抽象方法的类必须是抽象类

      不包含抽象方法的类也可以声明为抽象类-----我愿意

   3)抽象类不能被实例化

   4)抽象类是需要被继承的,子类:

      4.1)重写所有的抽象方法----建议

      4.2)声明为抽象类----不建议

   5)抽象类的意义:

      5.1)封装所有子类共有的数据和行为,实现代码重用

      5.2)为所有子类提供了一种公共的类型(向上造型)

      5.3)包含抽象方法,为所有子类提供一个统一的入口

代码示例:

package oo.day06;
//求一组图形中的最大面积
public class ShapeTest {public static void main(String[] args) {//Shape s = new Shape(); //编译错误,抽象类不能被实例化Shape[] shapes = new Shape[4]; //创建Shape数组对象shapes[0] = new Circle(1); //向上造型shapes[1] = new Circle(2);shapes[2] = new Square(1);shapes[3] = new Square(2);maxArea(shapes);	}public static void maxArea(Shape[] shapes){ //求最大面积double max = shapes[0].area(); //最大面积int maxIndex = 0; //最大面积索引for(int i=1;i<shapes.length;i++){double area = shapes[i].area();if(area>max){max = area;maxIndex = i;}}System.out.println("最大面积为:"+max+",所在索引为:"+maxIndex);}}abstract class Shape{ //抽象类protected double c; //周长public abstract double area(); //抽象方法
}
class Circle extends Shape{public Circle(double c){this.c = c;}public double area(){ //重写抽象方法return 0.0796*c*c;}
}
class Square extends Shape{public Square(double c){this.c = c;}public double area(){ //重写抽象方法return 0.0625*c*c;}
}


4.接口:

   1)是一个标准、规范-----制定方

      遵守了这个标准,就能干某件事-----后期再理解

   2)由interface定义

   3)只能包含常量和抽象方法

   4)接口不能被实例化

   5)接口是需要被实现(implements)的,实现类:

          必须重写接口中的所有抽象方法

   6)一个类可以实现多个接口,用逗号分隔

      若既继承又实现时,必须先继承,后实现

   7)接口之间可以继承

      7.1)类和接口之间为实现(implements)

      7.2)接口和接口之间为继承(extends)

      7.3)类和类之间为继承(extends)

代码示例:

package oo.day06;
//interface演示
public class InterfaceDemo {public static void main(String[] args) {//Inter6 o = new Inter6(); //编译错误,接口不能被实例化Foo o1 = new Foo();Inter6 o2 = new Foo(); //向上造型Inter5 o3 = new Foo(); //向上造型}
}interface Inter5{void a();
}
interface Inter6 extends Inter5{void b();
}
class Foo implements Inter6{public void b(){}public void a(){}
}interface Inter3{void a();
}
interface Inter4{void b();
}
abstract class Doo{abstract void c();
}
class Eoo extends Doo implements Inter3,Inter4{public void a(){}public void b(){}void c(){}
}interface Inter2{void a();
}
class Coo implements Inter2{public void a(){}
}interface Inter1{public static final int NUM=5;public abstract void show();double PI = 3.14159;//默认public static finalvoid sayHi(); //默认public abstract//public void say(){} //编译错误//public int a; //编译错误
}







这篇关于oop_day06_抽象类、接口_20150814的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1058991

相关文章

requests处理token鉴权接口和jsonpath使用方式

《requests处理token鉴权接口和jsonpath使用方式》文章介绍了如何使用requests库进行token鉴权接口的处理,包括登录提取token并保存,还详述了如何使用jsonpath表达... 目录requests处理token鉴权接口和jsonpath使用json数据提取工具总结reques

python调用dubbo接口的实现步骤

《python调用dubbo接口的实现步骤》本文主要介绍了python调用dubbo接口的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录 ​​其他实现方式与注意事项​​ ​​高级技巧与集成​​用 python 提供 Dubbo 接口

Java中接口和抽象类的异同以及具体的使用场景

《Java中接口和抽象类的异同以及具体的使用场景》文章主要介绍了Java中接口(Interface)和抽象类(AbstractClass)的区别和联系,包括相同点和不同点,以及它们在实际开发中的具体使... 目录一、接口和抽象类的 “相同点”二、接口和抽象类的 “核心区别”关键区别详解(避免踩坑)三、具体使

MySQL中C接口的实现

《MySQL中C接口的实现》本节内容介绍使用C/C++访问数据库,包括对数据库的增删查改操作,主要是学习一些接口的调用,具有一定的参考价值,感兴趣的可以了解一下... 目录准备mysql库使用mysql库编译文件官方API文档对象的创建和关闭链接数据库下达sql指令select语句前言:本节内容介绍使用C/

Java抽象类Abstract Class示例代码详解

《Java抽象类AbstractClass示例代码详解》Java中的抽象类(AbstractClass)是面向对象编程中的重要概念,它通过abstract关键字声明,用于定义一组相关类的公共行为和属... 目录一、抽象类的定义1. 语法格式2. 核心特征二、抽象类的核心用途1. 定义公共接口2. 提供默认实

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

基于Redisson实现分布式系统下的接口限流

《基于Redisson实现分布式系统下的接口限流》在高并发场景下,接口限流是保障系统稳定性的重要手段,本文将介绍利用Redisson结合Redis实现分布式环境下的接口限流,具有一定的参考价值,感兴趣... 目录分布式限流的核心挑战基于 Redisson 的分布式限流设计思路实现步骤引入依赖定义限流注解实现

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1