1 继承的好处        关键词-->extends
  1.1、继承的出现提高了代码的复用性,提高软件开发效率。
  1.2、继承的出现让类与类之间产生了关系,提供了多态的前提。

2 继承的注意事项
  *a:在Java中,也就是说一个类只能有一个直接父类,例如下面这种情况是不合法的。
  class A{}
  class B{}
  class C extends A,B{} // C类不可以同时继承A类和B类
3 继承后子类父类成员变量的特点 *****

  a:子类的对象调用成员变量的时候,子类自己有,使用子类,子类自己没有调用的父类

  b:当子父类中出现了同名成员变量

4子类,父类成员方法的特性-----》子类重写父类方法 *****

  a:子类的对象调用方法的时候,子类自己有,使用子类,子类自己没有调用的父类

  b:子类中出现与父类一模一样的方法时,会出现覆盖操作,也称为override重写、复写或者覆盖

  c:为什么重写父类的方法
  父类的方法 最先存在的 那么如果项目需求改了 那么父类方法 功能无法满足项目需求 但是项目中已经大量应用了改父类方法
  如果随意改父类--》功能会出问题
  那么久就重写----》在原来的功能基础上提供更强的功能

5 方法覆盖的注意事项
  a:权限:子类方法覆盖父类方法,必须要保证权限大于等于父类权限。
  四大权限:public>默认=protected>private

  b:重载与重写对比: *****
    重载:
      权限修饰符(public private 默认):无关
      方法名:重载的两个方法的方法名必须相同
      形参的个数不同
      形参的类型不同
      三者至少满足一个
      返回值类型:重载与返回值类型无关
    重写:
      权限修饰符(public private 默认):
      子类方法的权限>=父类的方法的权限
      方法名: 子类方法和父类方法必须相同
      形参列表: 子类方法和父类方法的形参列表必须相同
      返回值类型,基本类数据类型:必须相同
      引用数据类型:子类方法的返回值类型和父类方法的返回值类型相同
      或者子类方法的返回值类型是父类方法的返回值类型的 子类

6 抽象类的产生         关键词-->abstract
  a:分析事物时,发现了共性内容,就出现向上抽取。会有这样一种特殊情况,就是方法功能声明相同,但方法功能主体不同。那么这时也可以抽取,但只抽 取方法声明,不抽取方法主体。那么此方法就是一个抽象方法。
7 抽象类的定义格式
  A:抽象方法定义的格式:
  public abstract 返回值类型 方法名(参数);
  抽象类定义的格式:
  abstract class 类名 {

}

8 抽象类的使用方式

  public abstract class Develop {
    /*
      * public abstract 返回值类型 方法名(参数);
        抽象类定义的格式:
        abstract class 类名 {
          //抽象方法
  }     //1 定义一个开发工程师类     /*
      * EE开发工程师:工作
      * Ar 开发工程师:工作
      * 形成一个父类 Develop
      * abstract类不能new ---》不能实例化(需要重写)
      * 具体干什么说不清
     */ 例:
  public abstract void work();
  public void wo(){
    System.out.println("普通方法");
  }
}

   ★ 抽象类里可以有抽象方法也可以有普通方法


需要new其子类
9 抽象类特点

  a:抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。
  b:抽象类不可以直接创建对象,原因:调用抽象方法没有意义。
  c:只有覆盖了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽象类。
之所以继承抽象类,更多的是在思想,是面对对象共性类型操作会更简单。
10 抽象关键字abstract不可以和哪些关键字共存?
   1:private:私有的方法子类是无法继承到的,也不存在覆盖,
    而abstract和private一起使用修饰方法,abstract既要子类去实现这个方法,
    而private修饰子类根本无法得到父类这个方法。互相矛盾。

    /*
      * 抽象类,可以没有抽象方法,可以定义带有方法体的方法
      * 让子类继承后,可以直接使用
    */
作业:

  1 定义一个员工类 所有的子类都抽取(抽象类) Employee
属性:姓名 工号(生成get set )
方法:工作 抽象
  2 定义一个研发类员工 Develop abstract 继承Employee
抽象类的方法 work();
  3要求定义一个EE工程师类 工号 姓名 工作:开发拼多多
  4 要求定义Android 工程师 继承研发部类 重写工作方法 开发手机端淘宝

答:

★ Employee.java

public abstract class Employee {
String name;
int id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
} abstract void work(); public void speak(){
System.out.println("姓名:"+this.name+" "+"工号:"+this.id);
}
}

★Develop.java

public abstract class Develop extends Employee{

}

★Android.java

public class Android extends Develop {

void work() {
System.out.println("Ar工程师开发手机端淘宝"); } }

★EE.java

public class EE extends Develop {

void work() {
System.out.println("javaEE开发拼多多");
} }

★Test.java

public class Test {
public static void main (String[] args){
Android a = new Android();
EE e =new EE(); a.work();
a.setName("小福贵");
a.setId(120);
a.speak(); e.work();
e.setName("旺财");
e.setId(110);
e.speak();
//int i=e.getId();
//System.out.println(i);
}
}

<--------------------------Java继承及抽象类------------------------------>的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. RabbitMQ 均衡调度(公平分发机制)

    均衡调度是针对Consumer来说的.现在有两个Consumer请求同一个队列的消息.RabbitMQ会将序号为奇数的消息发给第一个Consumer,会将序号为偶数的消息发送给第二个Consumer. ...

  2. Zabbix4.0添加端口和进程监控

    一:Zabbix设置主动模式: vim /etc/zabbix/zabbix_agent.conf Server=192.168.1.10 #被动模式的serverip地址,如果设置纯被动模式,可以注 ...

  3. mybatis学习(三)----优化Mybatis配置文件中的配置

    一.把连接数据库的配置单独放在一个properties文件中 前面我们是把数据库的连接信息放在了mybatis-config.xml中,如下: <?xml version="1.0&q ...

  4. python中的循环以及,continue和break的使用

    循环 目标 程序的三大流程 while 循环基本使用 break 和 continue while 循环嵌套 01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 —— 从上向下,顺序执行 ...

  5. vue2+webpack 开发环境配置

    前提条件: 1.安装node.js https://nodejs.org/en/ 下载安装合适的平台 2.安装npm 第一步:初始化项目 新建文件夹 E:\app 推荐vue项目目录结构: confi ...

  6. HTML5中的data-*属性和jQuery中的.data()方法使用

    原文地址链接:http://blog.csdn.net/fly_zxy/article/details/50687691: HTML5中的data-*属性 我们往往会根据需要在HTML标记上添加自定义 ...

  7. day 31 udp 协议SOCK_DGRAM

    udp 服务端引用socket=类型,协议绑定地址 和 端口while 循环收到 data addr = 服务.recvfrom(1024)发送 服务.sendto(data,addr(ip 端口)) ...

  8. php usort

    <?phpfunction re($a,$b){ return ($a>$b)?1:-1; }$x=array(1,3,2,5,9);usort($x, 're');print_r($x) ...

  9. ubuntu安装nodejs,npm live-server

    sudo apt-get install curl 先安装的是curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/in ...

  10. idea本地安装 lombok插件

    转:https://blog.csdn.net/weixin_41404773/article/details/80689639 idea本地安装 lombok插件 项目中经常使用bean,entit ...