子类与父类

  子类

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. 微信小程序传code 拿token 后台报40029 状态吗,是为什么?

    看看是不是code用了两次,还有种可能,检查一下后台的appid

  2. Flutter 开发入门实践

    前言: Flutter 是 Google 推出的跨平台解决方案, 开发语言:Dart 优势: 劣势: 学习推荐: 官方网站:https://flutter.io/ 书籍:<Flutter技术入门 ...

  3. Centos7编译安装kafka-manager-2.0.0.2

    一.kafka-manager简介 项目地址为:https://github.com/yahoo/kafka-manager 为了简化开发者和服务工程师维护Kafka集群的工作,yahoo构建了一个叫 ...

  4. 一周搞定模拟电路P2_二极管介绍_记录

    1 稳压二极管 1.1 稳压二极管伏安特性曲线 ΔIz 这一段为能够达到比较好的稳压效果的稳压电流. 1.2 两种连接方法的比较 2 整流二极管 2.1 特点 用于把交流电变成脉动直流电 3 开关二极 ...

  5. 《实战Java高并发程序设计》读书笔记六

    第六章 Java 8 与并发 1.函数式编程 函数作为一等公民: 将函数作为参数传递给另外一个函数这是函数式编程的特性之一. 函数可以作为另外一个函数的返回值,也是函数式编程的重要特点. 无副作用: ...

  6. <位运算> 任意二进制数 异或两个相同的二进制数 还是原本的值

    二进制,即0与1. 因为两个相同的二进制 异或必为0.(类似于不进位加法) 二进制里与0异或为其原本的0与1.. 可得任意二进制数 异或两个相同的二进制数 还是原本的值. 可用于交换和加密.

  7. JSON parse error: default constructor not found. class java.time.YearMonth; nested exception is com.alibaba.fastjson.JSONException: default constructor not found. class java.time.YearMonth

    java8新出的YearMonth可以方便的用来表示某个月.我的项目中使用springmvc来接收YearMonth类型的数据时发现 x-www-from-urlencoded 格式的数据可以使用&q ...

  8. PHP 站内消息的表结构设计

    1)添加全站通知:信息存入到 tb_message 2)用户点开信息或者设置信息为已阅读:插入记录到 tb_message_readlog 如何设计存储的表?求最佳方案 CREATE TABLE `m ...

  9. 【C语言】创建一个函数,并调用比较两个数的大小

    #include <stdio.h> int max(int x,int y) { if(x>=y) return x; else return y; } main() { int ...

  10. jquery Ajax标准规范写法

    $.ajax({ url:"http://www.xxx",//请求的url地址 dataType:"json",//返回的格式为json async:true ...