子类与父类

  子类

class  子类名  extends  父类名{
    .......
}

  类的树形结构

子类的继承性

  子类和父类在同一包中的继承性

子类继承了父类不是private的成员属性和成员方法

    子类和父类在同一包中的继承性

//子类中只继承protected和public的成员变量和成员方法

    继承关系的UML

子类与对象

//当使用子类构造方法创建对象的时候,不仅子类声明中的成员变量被分配了内存,而且父类的成员变量也分配了内存空间

成员变量的隐藏和方法重写

  成员变量的隐藏:

/*
*当子类的成员变量和父类的成员变量出现同名时(变量类型可以不同),这样子类就会隐藏
*所继承的成员变量
*/

  特点:

/*
*之类对象已经自己定义的方法操作与父类同名的成员变量是指子类重新声明的这个成员变量
*子类对象仍然可以调用从父类继承的方法操作被子类隐藏的成员变量,也就是说,子类继承的
*方法所操作的成员变量一定是被子类继承或者隐藏的成员变量
*/
/*
子类继承的方法只能操作子类继承和隐藏的成员变量
子类新定义的方法可以操作子类继承和子类新声明的成员变量,但无法操作子类隐藏的成员变量(若要操作需要使用super关键字操作子类隐藏的成员变量)
*/

    方法重写

子类通过重写可以隐藏已继承的方法(方法重写又称方法覆盖)
重写规则:
1.如果子类可以继承父类的某个方法,这个子类就有权利重写这个方法。
2.子类的方法名字,返回类型,参数类型个数都要和父类的一致才算是重写
3.@Override
/*
重写的目的:
隐藏继承的方法,增加拓展功能
*/
/*
注意事项:
重写父类的方法时,不允许降低方法的访问权限,但可以提高访问权限
高到低:public--->protected--->友好的--->private */

super关键字

/*super代表指向父类

子类一旦隐藏继承的成员变量/方法,那么子类创建的对象就不再拥有该变量/方法,该变量将归关键字super所有,可以使用super来访问

*/
/*
*在加载子类的时候回 super()调用父类的默认构造方法
*/

final关键字

/*
*fina可以修饰类,成员变量,方法中局部变量
*/
final class A{ } /*
final 修饰的类不能被继承,不能有子类;
*/ //final 修饰方法,那么这个方法不允许子类重写,也就是说,不允许子类隐藏可以继承的final方法老老实实继承,不许任何修改 public final void method(){ } //final 修饰的变量,就是常量,运行期间不允许修改

对象的上转型对象

Animal   a;
a=new Tiger();
//或者
Animal a;
Tiger b=new Tiger();
a=b; /*
* 这时就称a是对象b的上转型对象
*/

  特点:

/*
上转对象不能操作子类新增的成员变量/方法(失掉这一部分属性)
上转对象可以访问子类继承或者隐藏的成员变量/方法,
*/

继承与多态

/*

动态性:指父类的某个方法被父类的某个方法被子类重写时,可以产生自己的功能行为

*/

abstract类和abstract方法

/*
用关键字abstract修饰的类称为abstract类(抽象类)
*/
abstract class A{ } /*
使用关键字abstract修饰的方法称为abstract方法(抽象方法)
*/
abstract int min(int x,int y); abstract class A{//抽象类
abstract int min(int x,int y);//抽象方法
int max(int x,int y){
return x<y?y:x;
}
}

特点:

/*
1.abstract类 不能用new运算符创建对象
继承抽象类的类必须重写抽象类的抽象方法(不能使用abstract和final修饰同一个方法) 2.abstract类中可以有abstract方法 3.abstract的子类
如果一个非抽象类继承该抽象类,必须重写父类的抽象方法(给出方法体),如果是抽象类继承抽象类则,可重写或者继承 4.abstract类的对象作上转型的对象
抽象类可以 抽象出重要的行为标准,该标准用抽象方法来表示。
抽象类声明的对象可以成为其子类的对象的上转型对象 */

面向抽象编程

在程序设计时,经常使用抽象类,原因是:abstract类只是关心操作,而不关心这些操作具体的实现的细节,

开-闭原则

/*
让设计的系统对扩展开放,对修改关闭
*/

小结

Java基础知识笔记第五章:子类与继承的更多相关文章

  1. Java基础知识笔记第七章:内部类和异常类

    内部类 /* *Java支持在一个类中定义另一个类,这样的类称为内部类,而包含内部类的类称为内部类的外嵌类 */ 重要关系: /* *1.内部类的外嵌类在内部类中仍然有效,内部类的方法也可以外嵌类的方 ...

  2. Java基础知识笔记(五:多线程的同步问题)

    编写多线程程序往往是为了提高资源的利用率,或者提高程序的运行效率,或者更好地监控程序的运行过程等.多线程同步处理的目的是为了让多个线程协调地并发工作.对多线程进行同步处理可以通过同步方法和同步语句块实 ...

  3. Java基础知识笔记第六章:接口

    接口 /* 使用关键字interface来定义一个接口.接口的定义和类的定义很相似,分为接口声明和接口体 */ interface Printable{ final int max=100; void ...

  4. Java基础知识笔记第四章:类和对象

      编程语言的几个发展阶段 面向机器语言 面向过程语言 面向对象语言:封装.继承.多态 类 类声明 class Person{ ....... } class 植物{ ....... } 类体 类使用 ...

  5. Java基础知识笔记第三章:运算符表达式语句

    算术运算符与表达式 操作符 描述 例子 + 加法 - 相加运算符两侧的值 A + B 等于 30 - 减法 - 左操作数减去右操作数 A – B 等于 -10 * 乘法 - 相乘操作符两侧的值 A * ...

  6. java基础知识-笔记整理

    1.查看已安装jdk文件路径 CMD输入java -verbose.   2.java学习提升路线 java学习视屏地址: http://www.icoolxue.com/album/show/38 ...

  7. Java基础复习笔记系列 五 常用类

    Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...

  8. JAVA基础知识笔记

    1.类只能用Public修饰,不能使用protected.private修饰.也可以不加修饰符,称做友好类. 2.类的实体元素包含成员变量和方法的定义,成员变量分为实例变量和类变量(static修饰的 ...

  9. java第五章 子类与继承

    5.1子类与父类 1   java不支持多重继承,即一个子类不可以从多个父类中同时继承,而C++中可以. 人们习惯地称子类与父类的关系式“is—a”的关系 2   再类的声明过程中,通过关键字exte ...

随机推荐

  1. 简单json 转换为 map、对象

    1.如果转换的是Map.或者是简单的对象 package com.gc.action; import java.util.Map; import net.sf.json.JSONObject; /** ...

  2. A task in a suit and a tie:paraphrase generation with semantic augmentation解读

    1.该算法核心:在seq2seq模型的编码器中增加语义的frame 和 roles 2.上图为算法整个流程: 1).首先输入一句话s,SLING会使用frame和role label注释输入语句s,然 ...

  3. Linux - Shell - date

    概述 date 命令 准备 OS CentOS 7.6 基本功能 显示时间 格式化时间 翻译时间 转换时间格式 切换时区 设置时间 查看文件最后使用时间 1. 显示时间 概述 基本功能 命令 # 内容 ...

  4. 【PAT甲级】1110 Complete Binary Tree (25分)

    题意: 输入一个正整数N(<=20),代表结点个数(0~N-1),接着输入N行每行包括每个结点的左右子结点,'-'表示无该子结点,输出是否是一颗完全二叉树,是的话输出最后一个子结点否则输出根节点 ...

  5. WEB - 关于rel="noopener"

    参考网址 https://mathiasbynens.github.io/rel-noopener/ 例子 <a href="https://cli.vuejs.org" t ...

  6. Kmp算法浅谈

    Kmp算法浅谈 一.Kmp算法思想 在主串和模式串进行匹配时,利用next数组不改变主串的匹配指针而是改变模式串的匹配指针,减少大量的重复匹配时间.在Kmp算法中,next数组的构建是整个Kmp算法的 ...

  7. centOs安装出现No package git available的解决办法

    来源地址 [http://chinacheng.iteye.com/blog/1825538 ] centos安装git 下载源代码安装后,git clone出现“fatal unable to fi ...

  8. iOS开发常用Mac终端命令

    常用命令: 1.grep -lr "prefs:root=" * cd 当某一文件夹下,在当前文件目录下搜索对应的内容(橘色字符串替换为你想要搜索的内容).可以用来搜索工程中在第三 ...

  9. 基于Amoeba读写分离

    Amoeba 原理:amoeba相当于业务员,处理client的读写请求,并将读写请求分开处理.amoeba和master以及slave都有联系,如果是读的请求,amoeba就从slave读取信息反馈 ...

  10. JS-条件语句5准则

    准则: 1.多重判断时使用 Array.includes 2.更少的嵌套,尽早 return 3.使用默认参数和解构 4.倾向于遍历对象而不是 Switch 语句 5.对 所有/部分 判断使用 Arr ...