目标

1、  复合

2、  继承

3、  重写

4、  Super

5、  final

一、类与类的关系

参考: http://www.cnblogs.com/liuling/archive/2013/05/03/classrelation.html

复合: has a

1、  依赖: 形参、局部变量

2、  关联: 属性

3、  聚合: 属性整体与部分

4、  组合: 属性具有生命周期的一致性的整体与部分

继承: is  a   extends

实现: implements

二、继承: inheritance

1、理解

类: 对同种事物的抽象

继承: 在类的基础上进一步的抽象,对同一批类的抽象

延续和扩展父类的一切信息(包括私有)

2、extends

1)、被继承的类:父类 |基类|超类

2)、继承的类: 子类|派生类

注意: JAVA中仅支持单继承,一个子类仅有一个父类,一个父类可以存在多个子类。

3、延续和扩展

1)、延续:

直接使用复用父类的信息,前提存在访问权限

2)、扩展

a)、覆盖: 父类不满足子类的要求,按需覆盖

b)、新增: 父类没有,子类按需添加

4、单继承

Java 只支持单继承,extends后面只能写一个类

错误的写法:

三、重写 override

1、规则

在子类中,对父类方法进行改写,规则如下:

1)、方法签名相同: 方法名+形参

2)、返回类型<=

a)、基本类型|void 必须相同,否则编译错误

b)、引用类型,<= 可以是子类

c)、访问权限>=

最简单方法的就是一样,拷贝父亲的方法,改变里面的内容即可。

2、检查

如何检查为重写呢?

1)、使用注解@Override

2)、在父类中定义方法,调用一下,调用到了,就是重写,调用不到就不是重写

3、编译确定方法表

编译看类型运行找对象,Java分编译期与运行期

1)、编译期: 检查语法(确定调用的方法表)、适当优化

确定调用的方法表–>就近最有原则

2)、运行期在编译期的基础再运行代码,调用具体的对象的方法。

3)、改变为:

a、编译错误

b、注意结果为: f print(int)

如果使用子类对象调用方法,已经重写的调用重写的方法,否则调用父类的方法、新增方法。

4、不会重写

1)、属性不会重写

2)、static  private不会重写

3)、final 不能重写

四、查看api

api: application programming interface 字典,生成出来权限>=protected

1、查找类

1)、定为包名.类

2)、查看继承体系、接口 -->延续父类的方法

3)、通读第一段(前几句)说明,了解类的特点和作用

2、查找构造器

1)、能够找到构造器java.lang.Stringà根据构造器创建对象

2)、找不到构造器如java.lang.Runtime或 java.lang.Math

a)、此类为工具类,方法多数为静态方法,不用创建对象,说明类.调用方法即可

b)、此类不允许外部创建对象,需要查找一个公共的静态方法,返回该类的实例

3、查找方法

1)、方法名 2)、方法签名 (形参) 3)、返回值类型  4)、是否为静态

查看的描述(简短描述、详细描述、连蒙带猜式的看源码)

4、Object

老祖宗, equals()  hashcode() 和 toString() 被子类延续使用

1)、equals() à比较相等

equals在默认Object中就是比较地址是否相同。

String的equals()进行重写比较地址

2)、hashCode() à返回地址转换码

3)、toString() à字符串的表现形式

五、实例化过程

先父类后子类先静态后成员

六、super

在子类中,指代父类对象。在子类的成员方法、构造器存在

1、super. 属性  | 方法–>指代父类的方法|属性,必须存在访问权限。

2、super([实参]) –>子类的构造器首行,显式的调用父类指定的构造器。默认的情况下 : 父类空构造。

七、final

final 最终的

1、常量属性: 值一旦确定不可改变

赋值:

1)、声明的同时赋值

2)、成员常量:

3)、静态常量

2、类:此类不能被继承

3、方法: 此方法不能被重写

java学习第七天的更多相关文章

  1. 从.Net到Java学习第七篇——SpringBoot Redis 缓存穿透

    从.Net到Java学习系列目录 场景描述:我们在项目中使用缓存通常都是先检查缓存中是否存在,如果存在直接返回缓存内容,如果不存在就直接查询数据库然后再缓存查询结果返回.这个时候如果我们查询的某一个数 ...

  2. [转载]Java学习这七年

    从2005那会做自动化测试开始接触Java开始,至今近7年.今天正好项目结束,趁机整理下思路,确定后续方向. 前三个年头基本上集中于Java基础的学习,包括设计模式,从完全不懂,到看的懂但似乎又不懂, ...

  3. java学习第七天2020/7/12

    一. java继承使用的关键字是  extend class 子类 extends 父类{} 举一个类的例子: public class person { public String name; pu ...

  4. Java学习笔记七——数组工具类Arrays

    数组工具类Arrays Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组.若将里面的方法用熟的话,那开发效率会大大提高.下面介绍其中的方法. List<T> ...

  5. Java学习第七篇:与运行环境交互

    目录 一.与用户互动 1.main方法形参 2.使用Scanner类获取输入 3.使用BufferedReader类获取输入 二.常用类 1.System类和Runtime类 2.String, St ...

  6. Java 学习笔记 (七) Java 参数

    head first java page 74 实参: argument 形参: parameter 方法会运用形参, 调用的一方会传入实参. 实参是传给方法的值.当它传入方法后就成了形参, 参数跟局 ...

  7. Java学习笔记七(目录操作)

    1.介绍 上一篇博客介绍的是java中经常使用的操作文件的方式,本篇博客着重解说一下,在Java中是怎样来操作目录的.主要是利用的是Java.IO包以下的File类,本篇博客着重解说一下该类的构造函数 ...

  8. Java学习笔记七:Java的流程控制语句之switch

    Java条件语句之 switch 当需要对选项进行等值判断时,使用 switch 语句更加简洁明了.例如:根据考试分数,给予前四名不同的奖品.第一名,奖励笔记本一台:第二名,奖励 IPAD 2 一个: ...

  9. JAVA学习(七):方法重载与方法重写、thiskeyword和superkeyword

    方法重载与方法重写.thiskeyword和superkeyword 1.方法重载 重载可以使具有同样名称但不同数目和类型參数的类传递给方法. 注: 一是重载方法的參数列表必须与被重载的方法不同,而且 ...

随机推荐

  1. iOS:控制器间的数据传递

    在iOS开发中遇到的控制器间的数据传递主要有两种情况:顺传递与逆传递.顺传递是指数据的传递方向和控制器的跳转方向相同(如图1):逆传递是指数据的传递方向和控制器的跳转方向相反(如图2).这里分别介绍这 ...

  2. 自定义Encoder/Decoder进行对象传递

    转载:http://blog.csdn.net/top_code/article/details/50901623 在上一篇文章中,我们使用Netty4本身自带的ObjectDecoder,Objec ...

  3. 在 Ubuntu 14.04/15.04 上配置 Node JS v4.0.0

    大家好,Node.JS 4.0 发布了,这个流行的服务器端 JS 平台合并了 Node.js 和 io.js 的代码,4.0 版就是这两个项目结合的产物——现在合并为一个代码库.这次最主要的变化是 N ...

  4. bzoj 2242: [SDOI2011]计算器

    #include<cstdio> #include<iostream> #include<map> #include<cmath> #define ll ...

  5. Jmeter java.lang.OutOfMemoryError: GC overhead limit exceeded

    使用这个jmeter工具测试时,遇到这么个gc错误,网上找到了解决方案.原因是jmeter默认分配内存的参数很小,好像是256M吧.故而解决方法,就是增加内存: set HEAP=-Xms4g -Xm ...

  6. Echarts 地图控件tooltip多行显示

    直接上代码 var o = { "tooltip": { trigger: 'item', "formatter": function (params) { v ...

  7. 面试题目-findmax的实现

    #include <vector> #include <iostream> #include "printCollection.h" using names ...

  8. how to reset mac root password

    Reset 10.5 Leopard & 10.6 Snow Leopard password Power on or restart your Mac. At the chime (or g ...

  9. C# WinForm程序向datagridview里添加数据

    在C#开发的winform程序中,datagridview是一个经常使用到的控件.它可以以类似excel表格的形式规范的展示或操作数据,我也经常使用这个控件.使用这个控件首先要掌握的就是如何向其中插入 ...

  10. 【转发】linux yum命令详解

    linux yum命令详解 yum(全 称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理, ...