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. eclipse package视图和navigator视图的区别

    package视图是适合开发的视图,因为开发时我们只关注源文件,并不关注编译后的二进制文,所有在该视图中存放二进制文件的classes文件被隐藏了,而navigator视图,就是项目在工作空间中存放的 ...

  2. 三:使用docker-machine安装虚拟机上的docker

    1.docker安装之后自带docker-machine:(需要win10专业版或mac) 2.如何远程管理一个docker-machine?(以下是Mac环境) 关闭本地的docker应用.运行do ...

  3. mysql存储过程造数

    性能测试时,数据库表通常需要很多数据,此时我们可以用存储过程来造数,以下代码mysql.Oracle都可以用 首先,先查看数据库表的设计,可以看到每张表有多少字段,分别都是什么类型,哪个字段是自动增长 ...

  4. CSS学习笔记-01-2D转换模块

    首先,mark 一下  css3 新增 的 2D 转换之 W3school 的链接: http://www.w3school.com.cn/css3/css3_2dtransform.asp 转换是使 ...

  5. day 96 关于分页的使用

    分页的学习主要四步骤 from django.db import models # Create your models here. class Book(models.Model): title = ...

  6. mysql 数据库关于my.int 的相关问题

    最好在建库的时候直接建好 create database db1 charset utf8; my.int  在mysql的目录里 名曰配置文件    里面主要是内容就是 1 一般用到的就是编码不统一 ...

  7. day 34 进程线程排序 抢票 初级生产者消费者

    # 实现的内容 模拟购票 20个人买,就有一张购票查,的时候大家都看到,但是购买只能一人购买成功#利用互斥锁# from multiprocessing import Process,Lock# im ...

  8. Cleartext HTTP traffic to ... not permitted

    Android下APP出现java.io.IOException: Cleartext HTTP traffic to dict.youdao.com not permitted,百度查了一下是And ...

  9. Vue数组操作不刷新视图问题的解决

    最近使用Vue2.0开发项目,有一个列表使用v-for绑定到数组,按照Vue的推荐方案,使用push.splice.this.$set三个变异方法操作数组.发现在添加页面,三个方法都能及时刷新视图:但 ...

  10. wx小程序修改swiper 点的样式

    <swiper class="swiper-box" indicator-dots="{{ indicatordots }}" autoplay=&quo ...