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. AngularJs和Vue比较

    http://jimhoskins.com/2012/12/17/angularjs-and-apply.html

  2. Python Select模型(程序流程)(转)

    缘由 之前写socket的CS模型代码,都是利用最原始的多线程方式.服务端是主线程,接到客户端的连接请求就从线程池中获取一个线程去处理整个socket连接的所有操作,虽然在连接数较短的情况下没有什么影 ...

  3. 玩转X-CTR100 l STM32F4 l 定时器时间测量

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 使用处理器内部硬件定 ...

  4. tomcat启动失败,提示信息:Unable to ping server at localhost:1099

    jdk1.7+maven9.0.0开启服务器时,提示Unable to ping server at localhost:1099 然后换成tomcat8.5.1就成功开启服务器

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

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

  6. Word2Vec实现原理(Hierarchical Softmax)

    由于word2vec有两种改进方法,一种是基于Hierarchical Softmax的,另一种是基于Negative Sampling的.本文关注于基于Hierarchical Softmax的改进 ...

  7. 2-log4j2之使用根控制器输出日志到控制台

    一.添加maven依赖 <!-- 使用aliyun镜像 --> <repositories> <repository> <id>aliyun</i ...

  8. mysql基础查询语法

    一.mysql查询的五种子句 where子句(条件查询):按照“条件表达式”指定的条件进行查询. group by子句(分组):按照“属性名”指定的字段进行分组.group by子句通常和count( ...

  9. IDEA PYCHARM USAGE NOTE

    初次安装使用PyCharm,在新建.py文件时会发现文件头并没有什么信息,因此,使用模板会比较方便. 方法如下: 1.打开PyCharm,选择File--Settings 2.依次选择Editor-- ...

  10. 2017MySQL中文索引解决办法 自然语言处理(N-gram parser)

    问题:长期以来MYSQL搜索对于中文来说不太理想,InnoDB引擎对FULLTEXT索引的支持是MySQL5.6新引入的特性,但是用“初级”一词在“我是一名初级开发者”搜索时是无法出现结果的,原因在于 ...