1.抽象类(重点)
1.1 抽象方法的概念
抽象方法就是指不能具体实现的方法,也就是该方法没有方法体,使用abstract关键字修饰
如:
public abstract void cry();

1.2 抽象类的概念
抽象类就是不能具体实现的类,也就是不能实例化对象,使用abstract关键字修饰。

1.3 注意事项
a.抽象类中可以有成员变量、成员方法以及构造方法。
b.抽象类中可以有抽象方法也可以没有。
c.具有抽象方法的类必须是抽象类,因此很多资料上认为具有抽象方法并且使用abstract
关键字修饰的类才为真正意义上的抽象类。

1.4 抽象类的意义
抽象类的意义不在于自身创建对象而在于被继承,当一个类继承抽象类之后必须要重写继承下来的抽象方法,否则该类也得变成抽象类。
因此,抽象类对子类具有强制性和规范性,通常叫做 模板设计模式。

经验的分享:
在以后的开发中推荐使用父类引用指向子类对象的方式,因为父类引用直接调用的所有方法一定是父类中拥有的方法,若后续调试中需要更换子类时,只需要将new后面的子类类型修改完毕而其它所有代码不动就立刻生效,从而提高了代码的可维护性和可扩展性。
该方式的缺点:不能直接调用子类独有的方法,若调用则需要强制类型转换。

练习:
自定义Account类,特征有:账户余额,要求实现封装并提供计算利息并返回的抽象方法;
自定义FixedAccount类继承Account类,在main()方法中使用多态的语法设置余额并计算利息,最后打印出来。

2.接口(重点)
2.1 基本概念
接口本质上就是一种比抽象类还抽象的类,也就是依然不能实例化对象。
定义抽象类使用class关键字,而定义接口使用interface关键字。

2.2 类和接口之间的关系
类和类之间的关系 使用extends关键字表达继承的关系 支持单继承
类和接口之间的关系 使用implements关键字表达实现的关系 支持多实现
接口和接口之间的关系 使用extends关键字表达继承的关系 暂时认为单继承

2.3 抽象类和接口之间的区别(笔试题)
(1)定义抽象类使用class,而定义接口使用interface关键字。
(2)继承抽象类使用extends,而实现接口使用implements关键字。
(3)继承抽象类支持单继承,而实现接口支持多实现。
(4)抽象类中可以有构造方法,而接口中不可以有。
(5)抽象类中可以有成员变量,而接口中全部是常量。
(6)抽象类中可以有成员方法,而接口中全部是抽象方法。
(7)抽象类中增加方法可以不影响子类,而接口中增加方法一定会影响子类。
(8)从jdk1.8开始允许接口中出现带有方法体的方法,但需要使用default关键字修饰。

3.内部类(了解)
3.1 基本概念
当一个类的定义放在另外一个类的类体中时,把这个放在内部的类叫做内部类,该类所在的类叫做外部类。
类的内容:成员变量、成员方法、构造方法、构造块和静态语句块、内部类。

3.2 语法格式
class 类名{
class 类名{
内部类的类体;
}
}

3.3 基本功能
当一个类存在的价值仅仅是为某一个类单独服务时,此时就可以将该类定义为内部类,内部类可以直接访问所在类的私有成员变量而不再需要提供公有的get和set方法。

3.4 基本分类
普通内部类 - 直接将一个类的定义放在另外一个类的内部。
静态内部类 - 使用static关键字修饰的内部类。
- 只有内部类才可以使用static关键字修饰。
局部内部类 - 直接将一个类的定义放在方法体的内部。
- 局部内部类只在方法体的内部有效。
匿名内部类 - 没有名字的内部类,通常用于构造父类/接口类型的对象。

3.5 匿名内部类(重点)
(1)语法格式
父类/接口类型 引用变量名 = new 父类/接口类型(){
进行方法的重写;
};

(2)经验的分享
当接口类型的引用作为方法的形参时,实参的传递方式有两种:
a.自定义类实现接口,然后new该实现类的对象作为实参传递;
b.采用匿名内部类的语法格式得到给接口的引用作为实参传递;

多态的使用场合:
a.直接在方法体中使用多态的形式
Person p = new Student();
b.通过方法的参数传递来形成多态
public static void test(A a){ ...}
A a = new SubA();
TestA.test(a); => TestA.test(new SubA())
c.通过方法的返回值来形成多态
public Person show(){
return new Student();
}

4.Object类
4.1 常用的包
java.lang包 - 该包是Java语言的核心包,该包中的所有内容由Java虚拟机自动导入。
- 如:String类、System类等
java.util包 - 该包是Java语言的工具包,该包中提供了大量的工具类和集合类等。
- 如:Scanner类、Random类等
java.io包 - 该包是Java语言的输入输出包,该包中包含了大量读写文件相关的类等。
- 如:FileInputStream类等。
java.net包 - 该包是Java语言的网络包,该包中包含了大量网络编程相关的类等。
- 如:ServerSocket类等。
... ...

4.2 Object类
(1)基本概念
java.lang.Object类是类层次结构的根类,任何类都是该类的直接或间接子类。

(2)常用的方法
Object() - 使用无参的方式来构造对象。
boolean equals(Object obj) - 用于判断调用对象是否和参数对象相等。
int hashCode() - 用于获取调用对象的哈希码值(内存地址的编号)。
String toString() - 用于获取调用对象的字符串表示形式并返回。

(1)抽象类 (2)接口 (3)内部类 (4)Object类的更多相关文章

  1. Unit06 - 抽象类、接口和内部类(下) 、 面向对象汇总

    Unit06 - 抽象类.接口和内部类(下) . 面向对象汇总 1.多态:  1)意义:    1.1)同一类型的引用指向不同的对象时,有不同的实现        行为的多态:cut().run(). ...

  2. Unit05 - 抽象类、接口和内部类(上)

    Unit05 - 抽象类.接口和内部类(上) 1.static final常量:  1)必须声明同时初始化  2)通过类名来访问,不能被改变  3)建议:常量名所有字母都大写(多个单词间用_)  4) ...

  3. Java程序设计8——抽象类、接口与内部类

    1 抽象类 当编写一个类时,常常会为该类定义一些方法,这些方法用以描述该类的行为方式,那么这些方法都有具体的方法体.但在某些情况下,某个父类并不需要实现,因为它只需要当做一个模板,而具体的实现,可以由 ...

  4. Java面向对象(三) 【面向对象深入:抽象类,接口,内部类等】

    面向对象(Object Oriented) 1.抽象类抽象就是将拥有共同方法和属性的对象提取出来.提取后,重新设计一个更加通用.更加大众化的类,就叫抽象类.1)abstract 关键字修饰类.方法,即 ...

  5. Java抽象类、接口、内部类

    抽象类的概念: 1.Java中可以定义没有方法体的方法,还方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类: 2.如,shape类计算周长和面积的方法无法确定,那么就可以将这样 ...

  6. Day06:抽象类、接口和内部类(上)

    JVAV中的常量 什么是常量? 常量就是不会变化的数值 为什么需要常量? 方便使用(调用)不会变化的数值 特性 不能修改 所有对象共享 常量一定是成员 定义 public static final 类 ...

  7. Day12 抽象类、接口、内部类-面向对象编程(3)

    抽象类 abstract修饰符可以用来修饰方法也可以用来修饰类,如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类: 抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类. ...

  8. JAVA集合类简要笔记 - 内部类 包装类 Object类 String类 BigDecimal类 system类

    常用类 内部类 成员内部类.静态内部类.局部内部类.匿名内部类 概念:在一个类的内部再定义一个完整的类 特点: 编译之后可生成独立的字节码文件 内部类可直接访问外部类私有成员,而不破坏封装 可为外部类 ...

  9. Java抽象类、接口和内部类

    1.抽象方法.抽象类 1)抽象方法: 由abstract修饰 只有方法的定义,没有方法的具体实现(连{}都没有) 由abstract修饰的方法为抽象方法,抽象方法只有方法的定义,没有方法体实现,用一个 ...

随机推荐

  1. Socket编程 - 网络基础知识

    API编程部分:http://www.cnblogs.com/Jimmy1988/p/7895213.html 1. 协议简介 此处,我们主要介绍Linux编程常用的三种协议(TCP/UDP/IP), ...

  2. 常用工具说明-- Intellij Idea生成JavaDoc

    JavaDoc是一种将注释生成HTML文档的技术,生成的HTML文档类似于Java的API,易读且清晰明了.在简略介绍JavaDoc写法之后,再看一下在Intellij Idea 中如何将代码中的注释 ...

  3. MQ疑难杂症小记

    为什么使用消息队列? 什么业务场景,这个业务场景有个什么技术挑战,如果不用MQ可能会很麻烦,但是你现在用了MQ之后带给了你很多的好处.消息队列的常见使用场景,其实场景有很多,但是比较核心的有3个:解耦 ...

  4. 面向连接的传输TCP(一)

    这篇博客主要是对计算机网络自顶向上做的阅读笔记,深入地了解TCP 一.TCP连接 1.特点: a.TCP是面向连接的,因为一个进程在向另一个进程进行数据传输之前必须先要握手,即要互相发送报文,以确认信 ...

  5. 1 springboot创建项目

    文章采用idea工具进行springboot项目创建 1点击 New Project 选择[Spring Initializr] 选择Jdk版本其他默认即可 点击Next 2添加项目信息 文章即使用默 ...

  6. 关于Datagridview控件用法的一些总结

    一.引言 Datagridview控件在winform开发中还是比较常用,一般的数据库系统都会使用它,但是想要友好的展示数据,形成良好的用户界面,那么就要对c#库中默认的Datagridview设置进 ...

  7. Linux 网络流量查看 Linux ip traffic monitor

    Network monitoring on Linux This post mentions some linux command line tools that can be used to mon ...

  8. Dlink DIR-823G 漏洞挖掘过程

    前言 本文由 本人 首发于 先知安全技术社区: https://xz.aliyun.com/u/5274 初步分析 首先下载固件 https://gitee.com/hac425/blog_data/ ...

  9. IOT安全

    相关资源 IOT 漏洞 top 10 https://xz.aliyun.com/t/2278 https://www.owasp.org/images/8/8e/Infographic-v1.jpg ...

  10. PHP二维数据排序,二维数据模糊查询

    一.因为项目中的一个报表需要合并三个表的数据,所以分表查询再合并数据,利用PHP数组函数进行排序,搜索.三表合并后的数组结构如下: Array ( [0] => Array ( [history ...