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类相关推荐

  1. abstract类_012 JAVA 抽象类、接口、String类的基础了解

    1.抽象方法和抽象类 抽象方法:使用abstract修饰的方法,没有方法体,只有声明.抽象方法可以当做是一种规范,让子类必须实现. 注意: 1.抽象方法没有方法体,只能以分号结尾 2.抽象方法只能声明 ...

  2. Java黑皮书课后题第10章:*10.22(实现String类)Java库中提供了String类,给出你自己对下面方法的实现(将新类命名为MyString1)

    10.22(实现String类) 题目 代码:本类被命名为Test22_MyString1 题目 代码:本类被命名为Test22_MyString1 public class Test22_MyStr ...

  3. JDK中提供的实现——通过 java.util.Observable 类和 java.util.Observer 接口定义了观察者模式,只要实现它们的子类就可以编写观察者模式实例

    JDK中提供的实现 在 Java 中,通过 java.util.Observable 类和 java.util.Observer 接口定义了观察者模式,只要实现它们的子类就可以编写观察者模式实例. 1 ...

  4. java找到指定接口的实现类

    一.背景 想在自己开发的项目上加一个算法工具类用来整合不同的算法,并且要求低耦合符合开闭原则,于是想到了<大话设计模式>里的策略模式,但是书中的策略模式还没有达到完全符合开闭原则,同时我在 ...

  5. java源码详解——String类

    java源码详解--String类目录: Java String 类 下面开始介绍主要方法: Java charAt() 方法 Java compareTo() 方法 int compareTo(St ...

  6. Java黑皮书课后题第10章:**10.23(实现String类)在Java库中提供了String类,给出你自己对下面方法的实现(将新类命名为MyString2)

    **10.23(实现String类)在Java库中提供了String类,给出你自己对下面方法的实现(将新类命名为MyString2) 题目 简短的吐槽 代码:这里将类名改用Test23_MyStrin ...

  7. 一大波Java来袭(四)String类、StringBuilder类、StringBuffer类对照

    本文主要介绍String类.StringBuffer类.StringBuilder类的差别  : 一.概述 (一)String 字符串常量.可是它具有不可变性,就是一旦创建,对它进行的不论什么改动操作 ...

  8. java 抽象类,接口,object类详解

    抽象类: 如果一个类没有足够的信息去描绘一个具体的对象,那么这个类就可以叫做抽象类. 也可以叫做:可声明抽象方法的类==>抽象类 注意: <1>抽象类不可以实例化对象,所以它只能被继 ...

  9. Java 类和对象——抽象类、接口、Object类

    本文章继续来介绍类和对象的知识.重点介绍抽象类和接口,Object类只做简单介绍. 现在,定义一个Shape类(形状类),当不同的对象去调用的时候,就会画出不同的图形,使用圆这个对象去调用,就会画出⚪ ...

最新文章

  1. each(callback)与each(object[,callback])的区别
  2. 前后端分离开发,RESTful 接口应该这样设计
  3. python学习之路-day7
  4. php redis编程,php + redis 实现关注功能
  5. python渲染html 库_在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
  6. 16进制颜色识别和搭配规律
  7. rpgmvp图片怎么看_拼多多商城图片和视频下载不了怎么办,看这里。。。。
  8. saiku连mysql 使用_saiku应用的调试
  9. speak 计算机英语作文,跪求一篇英语作文 题目:论计算机的优缺点
  10. 技嘉z77主板msata速度_技嘉小雕、微星迫击炮、华硕电竞特工三款主板对比
  11. dump java 分析工具,java内存分析工具 jmap,jhat及dump分析
  12. Java web 实现视频在线播放的常用几种方法
  13. 小程序-仿微信通讯录-字母导航
  14. Win7旗舰版安装经验
  15. 《菩萨蛮·隔花才歇帘纤雨》
  16. 站长号文库:.lol域名介绍
  17. ipad使用的PDF书籍没有目录怎么办?
  18. 绎维软件F-One获得B轮融资,华创资本领投,齐银基金跟投...
  19. 电容充电放电时间计算
  20. 02-CSS基础知识梳理(I)

热门文章

  1. Cpp / std::string 实现
  2. 猫、交换机和路由器的区别
  3. linux上传文件操作,每天一个linux命令(文件上传下载文件操作):【转载】gzip命令(示例代码)...
  4. mvc调用mysql存储过程_mysql – 存储过程不在MVC5中返回值
  5. python中split_python中split()和split(' ')的区别
  6. 伺服控制系统原理图_西门子PLC编程实例及技巧(运料小车控制系统)
  7. json txt格式转换器_SpringBoot项目中如何定制HTTP消息转换器
  8. spring-cloud-eureka服务注册与发现
  9. Fiori 出试(WEBIDE平台)day1
  10. SpringCloud基本模块分配搭建以及负载均衡