子类与父类

  子类

  1. class 子类名 extends 父类名{
  2.     .......
  3. }

  类的树形结构

子类的继承性

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

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

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

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

    继承关系的UML

子类与对象

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

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

  成员变量的隐藏:

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

  特点:

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

    方法重写

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

super关键字

  1. /*super代表指向父类
  2.  
  3. 子类一旦隐藏继承的成员变量/方法,那么子类创建的对象就不再拥有该变量/方法,该变量将归关键字super所有,可以使用super来访问
  4.  
  5. */
  1. /*
  2. *在加载子类的时候回 super()调用父类的默认构造方法
  3. */

final关键字

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

对象的上转型对象

  1. Animal a
  2. a=new Tiger();
  3. //或者
  4. Animal a;
  5. Tiger b=new Tiger();
  6. a=b;
  7.  
  8. /*
  9. * 这时就称a是对象b的上转型对象
  10. */

  特点:

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

继承与多态

  1. /*
  2.  
  3. 动态性:指父类的某个方法被父类的某个方法被子类重写时,可以产生自己的功能行为
  4.  
  5. */

abstract类和abstract方法

  1. /*
  2. 用关键字abstract修饰的类称为abstract类(抽象类)
  3. */
  4. abstract class A{ }
  5.  
  6. /*
  7. 使用关键字abstract修饰的方法称为abstract方法(抽象方法)
  8. */
  9. abstract int min(int x,int y);
  10.  
  11. abstract class A{//抽象类
  12. abstract int min(int x,int y);//抽象方法
  13. int max(int x,int y){
  14. return x<y?y:x;
  15. }
  16. }

特点:

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

面向抽象编程

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

开-闭原则

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

小结

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. Codeforces Round #624 (Div. 3) D. Three Integers

    You are given three integers a≤b≤ca≤b≤c . In one move, you can add +1+1 or −1−1 to any of these inte ...

  2. cgroup的学习笔记

    1.cgroup是什么? cgroup是一个linux内核提供的机制.目的是为了做资源隔离,资源限制,资源记录. 2.cgroup怎么安装? yum install cgroup service cg ...

  3. MySQL删除语句比较,清空表数据,重置自增长索引

    drop truncate delete 程度从强到弱 1.drop table tbdrop将表格直接删除,没有办法找回 2.truncate (table) tbtruncate 删除表中的所有数 ...

  4. 洛谷 P3901 数列找不同(莫队)

    题目链接:https://www.luogu.com.cn/problem/P3901 这道题简单莫队模板题,然后$add$和$del$分别处理$vis[]$从$0-->1$和从$1--> ...

  5. htm5实现 文件夹上传

    观察百度云上传,可以看到input type=file 的标签上加个一个属性“webkitdirectory”,加上次属性即可选择整个文件夹.

  6. collections模块、时间模块、random模块、os模块、sys模块、序列化模块、subprocess模块

    一.collections模块 1.其他数据类型 在内置数据类型(str.dict.list.tuple.set)的基础上,collections模块还提供了了几个额外的数据类型:Counter.de ...

  7. SDNU_ACM_ICPC_2020_Winter_Practice_4th

    H - Triangle   思路:用了斐波那契数列,因为数列中的任意三数都无法组成三角形,所以将1,2,3,,,n变成斐波那契数列就符合条件: #include <iostream> u ...

  8. 用svn客户端checkout时报错RA layer request failed

    用svn客户端checkout时报错: RA layer request failedsvn: Unable to connect to a repository at URL 'https://30 ...

  9. Java面向对象封装优化2_构造方法

    1. 类 package cn.itcast.day06.demo05; /* 一个标准的类通常要拥有下面四个组成部分: 1. 所有的成员变量都要使用private关键字修饰 2. 为每一个成员变量编 ...

  10. 【jQuery基础】

    " 目录 #. 介绍 1. 优势 2. 版本 3. jQuery对象 #. 查找标签 1.  选择器 /. 基本选择器 /. 层级选择器 /. 基本筛选器 /. 使用jQuery实现弹框 / ...