abstract类_012、Java的抽象方法、接口和String类
1. 抽象方法和抽象类
·抽象方法
使用abstract修饰的方法,没有方法体,只有声明。定义的是一种“规范”,就是告诉子类必须要给抽象方法提供具体的实现。
·抽象类
包含抽象方法的类就是抽象类。通过abstract方法定义规范,然后要求子类必须定义具体实现。通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用。
抽象类和抽象方法的基本用法
抽象类的使用要点:
1. 有抽象方法的类只能定义成抽象类
2. 抽象类不能实例化,即不能用new来实例化抽象类。
3. 抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用。
4. 抽象类只能用来被继承。
5. 抽象方法必须被子类实现。
2.接口的详解
接口的本质
接口本质就是一种契约(规范),它被抽象类更加抽象,接口中所有的方法都是抽象方法(没有方法体,所有的变量都是常量)。
接口的定义
public interface 接口名称 extends 父接口1,父接口2...{
//成员变量(常量)--->默认使用public static final修饰的
//方法(抽象方法)--->默认使用public abstract修饰的
}
接口和抽象类的区别
1.抽象类可以包含普通方法,构造方法和非常量的成员变量,而接口中所有的方法都是抽象方法,不能有构造方法,其成员变量为常量。
2.接口中方法默认使用public abstract修饰,成员变量默认使用public static final修饰
3.抽象类不能多继承,而接口可以
运行效果
定义接口的详细说明:
1. 访问修饰符:只能是public或默认。
2. 接口名:和类名采用相同命名机制。
3. extends:接口可以多继承。
4. 常量:接口中的属性只能是常量,总是:public static final 修饰。不写也是。
5. 方法:接口中的方法只能是:public abstract。 省略的话,也是public abstract。
要点
1. 子类通过implements来实现接口中的规范。
2. 接口不能创建实例,但是可用于声明引用变量类型。
3. 一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的。
4. JDK1.7之前,接口中只能包含静态常量、抽象方法,不能有普通属性、构造方法、普通方法。
5. JDK1.8后,接口中包含普通的静态方法。
接口的多继承使用
接口完全支持多继承。和类的继承类似,子接口扩展某个父接口,将会获得父接口中所定义的一切。
public
3.内部类
一般情况,我们把类定义成独立的单元。有些情况下,我们把一个类放在另一个类的内部定义,称为内部类(innerclasses)。
内部类可以使用public、default、protected 、private以及static修饰。而外部顶级类(我们以前接触的类)只能使用public和default修饰。
内部类可以访问外部类的成员变量,但外部类不能访问内部的成员变量。
内部类的分类:
Java中内部类主要分为成员内部类(非静态内部类、静态内部类)、匿名内部类、局部内部类。
成员内部类(可以使用private、default、protected、public任意进行修饰。 类文件:外部类$内部类.class)
内部类介绍
非静态内部类
1. 内部类里方法的局部变量:变量名。
2. 内部类属性:this.变量名。
3. 外部类属性:外部类名.this.变量名。
静态内部类
静态内部类的实例方法不能直接访问外部类的实例方法。静态内部类看做外部类的一个静态成员。通过 new 静态内部类()访问静态内部类的实例。
匿名类
语法:
new
注意
1. 匿名内部类没有访问修饰符。
2. 匿名内部类没有构造方法。因为它连名字都没有那又何来构造方法呢。
局部内部类
注意
内部类只是一个编译时概念,一旦我们编译成功,就会成为完全不同的两个类。对于一个名为Outer的外部类和其内部定义的名为Inner的内部类。编译完成后会出现Outer.class和Outer$Inner.class两个类的字节码文件。所以内部类是相对独立的一种存在,其成员变量/方法名可以和外部类的相同。
内部类的作用:
1. 内部类提供了更好的封装。只能让外部类直接访问,不允许同一个包中的其他类直接访问。
2. 内部类可以直接访问外部类的私有属性,内部类被当成其外部类的成员。 但外部类不能访问内部类的内部属性。
3. 接口只是解决了多重继承的部分问题,而内部类使得多重继承的解决方案变得更加完整。
4.String类和常量池
1. String类又称作不可变字符序列。
2. String位于java.lang包中,Java程序默认导入java.lang包下的所有类。
String类的常用方法
常量池
常量池分为三种:全局字符串常量池(String Pool)、class文件常量池(Class Constant Pool)、运行时常量池(Runtime Constant Pool)
String
5. 字符串相等的判断
1. equals方法用来检测两个字符串内容是否相等。如果字符串s和t内容相等,则s.equals(t)返回true,否则返回false。
2. 要测试两个字符串除了大小写区别外是否是相等的,需要使用equalsIgnoreCase方法。
3. 判断字符串是否相等不要使用"=="。
字符串的比较"=="与equals()方法
内存分析图
abstract类_012、Java的抽象方法、接口和String类相关推荐
- abstract类_012 JAVA 抽象类、接口、String类的基础了解
1.抽象方法和抽象类 抽象方法:使用abstract修饰的方法,没有方法体,只有声明.抽象方法可以当做是一种规范,让子类必须实现. 注意: 1.抽象方法没有方法体,只能以分号结尾 2.抽象方法只能声明 ...
- Java黑皮书课后题第10章:*10.22(实现String类)Java库中提供了String类,给出你自己对下面方法的实现(将新类命名为MyString1)
10.22(实现String类) 题目 代码:本类被命名为Test22_MyString1 题目 代码:本类被命名为Test22_MyString1 public class Test22_MyStr ...
- JDK中提供的实现——通过 java.util.Observable 类和 java.util.Observer 接口定义了观察者模式,只要实现它们的子类就可以编写观察者模式实例
JDK中提供的实现 在 Java 中,通过 java.util.Observable 类和 java.util.Observer 接口定义了观察者模式,只要实现它们的子类就可以编写观察者模式实例. 1 ...
- java找到指定接口的实现类
一.背景 想在自己开发的项目上加一个算法工具类用来整合不同的算法,并且要求低耦合符合开闭原则,于是想到了<大话设计模式>里的策略模式,但是书中的策略模式还没有达到完全符合开闭原则,同时我在 ...
- java源码详解——String类
java源码详解--String类目录: Java String 类 下面开始介绍主要方法: Java charAt() 方法 Java compareTo() 方法 int compareTo(St ...
- Java黑皮书课后题第10章:**10.23(实现String类)在Java库中提供了String类,给出你自己对下面方法的实现(将新类命名为MyString2)
**10.23(实现String类)在Java库中提供了String类,给出你自己对下面方法的实现(将新类命名为MyString2) 题目 简短的吐槽 代码:这里将类名改用Test23_MyStrin ...
- 一大波Java来袭(四)String类、StringBuilder类、StringBuffer类对照
本文主要介绍String类.StringBuffer类.StringBuilder类的差别 : 一.概述 (一)String 字符串常量.可是它具有不可变性,就是一旦创建,对它进行的不论什么改动操作 ...
- java 抽象类,接口,object类详解
抽象类: 如果一个类没有足够的信息去描绘一个具体的对象,那么这个类就可以叫做抽象类. 也可以叫做:可声明抽象方法的类==>抽象类 注意: <1>抽象类不可以实例化对象,所以它只能被继 ...
- Java 类和对象——抽象类、接口、Object类
本文章继续来介绍类和对象的知识.重点介绍抽象类和接口,Object类只做简单介绍. 现在,定义一个Shape类(形状类),当不同的对象去调用的时候,就会画出不同的图形,使用圆这个对象去调用,就会画出⚪ ...
最新文章
- each(callback)与each(object[,callback])的区别
- 前后端分离开发,RESTful 接口应该这样设计
- python学习之路-day7
- php redis编程,php + redis 实现关注功能
- python渲染html 库_在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
- 16进制颜色识别和搭配规律
- rpgmvp图片怎么看_拼多多商城图片和视频下载不了怎么办,看这里。。。。
- saiku连mysql 使用_saiku应用的调试
- speak 计算机英语作文,跪求一篇英语作文 题目:论计算机的优缺点
- 技嘉z77主板msata速度_技嘉小雕、微星迫击炮、华硕电竞特工三款主板对比
- dump java 分析工具,java内存分析工具 jmap,jhat及dump分析
- Java web 实现视频在线播放的常用几种方法
- 小程序-仿微信通讯录-字母导航
- Win7旗舰版安装经验
- 《菩萨蛮·隔花才歇帘纤雨》
- 站长号文库:.lol域名介绍
- ipad使用的PDF书籍没有目录怎么办?
- 绎维软件F-One获得B轮融资,华创资本领投,齐银基金跟投...
- 电容充电放电时间计算
- 02-CSS基础知识梳理(I)
热门文章
- Cpp / std::string 实现
- 猫、交换机和路由器的区别
- linux上传文件操作,每天一个linux命令(文件上传下载文件操作):【转载】gzip命令(示例代码)...
- mvc调用mysql存储过程_mysql – 存储过程不在MVC5中返回值
- python中split_python中split()和split(' ')的区别
- 伺服控制系统原理图_西门子PLC编程实例及技巧(运料小车控制系统)
- json txt格式转换器_SpringBoot项目中如何定制HTTP消息转换器
- spring-cloud-eureka服务注册与发现
- Fiori 出试(WEBIDE平台)day1
- SpringCloud基本模块分配搭建以及负载均衡