一、抽象类

1、抽象类的应用场景
我们在描述一类事物的时候,发现该种事物确实存在着某种行为,但是这种行为目前是不具体的,那么我们可以抽取这种行为的声明,但是不去实现该种行为,这时候这种行为我们称作为抽象的行为,我们就需要使用抽象类。

2、抽象类的好处: 强制要求子类一定要实现指定的方法。

3、抽象类要注意的细节:
① 如果一个函数没有方法体,那么该函数必须要使用abstract修饰,把该函数修饰成抽象的函数。
② 如果一个类出现了抽象的函数,那么该类也必须 使用abstract修饰。
③ 如果一个非抽象类继承了抽象类,那么必须要把抽象类的所有抽象方法全部实现。
④ 抽象类可以存在非抽象方法,也可以存在抽象的方法
⑤ 抽象类可以不存在抽象方法的。
⑥ 抽象类是不能创建对象的。
疑问:为什么抽象类不能创建对象呢?
答:因为抽象类是存在抽象方法的,如果能让抽象类创建对象的话,那么使用抽象的对象调用抽象方法是没有任何意义的。
⑦ 抽象类是存在构造函数的,其构造函数是提供给子类创建对象的时候初始化父类的属性的。

//动物类--->抽象类
abstract class Animal{  String name;String color;public Animal(String  name,String color){this.name = name;this.color = color;}//非抽象的方法public void eat(){System.out.println(name+"吃粮食");}//移动...public abstract void run();
}
//狗,是属于动物中一种
class Dog extends Animal{public Dog(String name,String color){super(name,color);}public void run(){System.out.println(name+"四条腿跑得很快...");}
}
//鱼,是属于动物中一种
class Fish extends Animal{public Fish(String name,String color){super(name,color);}public void run(){System.out.println(name+"摇摇尾巴游啊游!");}
}

4、abstract不能与以下关键字共同修饰一个方法
① abstract不能与private共同修饰一个方法
② abstract 不能与static共同修饰一个方法
③ abstract 不能与final共同修饰一个方法

二、值交换

1、值传递:调用一个方法的时候,传递给方法的参数 ,实际上传递变量所存储的值。

import java.util.*;
class Person{int x =10;
}
class Demo10.1{public static void main(String[] args){int a = 3;int b = 5; changeValue(a,b);System.out.println("交换之后的值:a = "+a +" b="+b); //值交换失败int[] arr = {23,10,9};changeArr(arr,1,2);System.out.println("数的元素:"+ Arrays.toString(arr));//值交换成功Person p = new Person();changeObj(p,20);System.out.println("x = "+ p.x);//20}  public static void changeObj(Person p ,int x){p.x = x;}    //需求2: 定义一个函数交换数组中两个元素的位置。public  static void changeArr(int[] arr , int index1,  int  index2){int temp = arr[index1];arr[index1] = arr[index2];arr[index2] = temp;    }//需求1:定义一个函数交换两个基本类型变量的值。 public static void changeValue(int a , int b){int temp = a;a = b;b = temp;System.out.println("方法内部交换的值:a = "+a +" b="+b);}
}

Java基础学习第十天(抽象类、值交换)相关推荐

  1. Java基础学习——第十六章 Java8新特性

    Java基础学习--第十六章 Java8 新特性 Java8(JDK8.0)较 JDK7.0 有很多变化或者说是优化,比如 interface 里可以有静态方法和默认方法,并且可以有方法体,这一点就颠 ...

  2. Java基础学习——第十四章 网络编程

    Java基础学习--第十四章 网络编程 一.网络编程概述 计算机网络: 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地互相传递信 ...

  3. Java基础学习第十二讲:Java面向对象---抽象类和接口

    Java面向对象-抽象类和接口 一.抽象类 抽象的定义: 我们在日常生活中,经常通过总结一些事物的共性来对事物进行分类,这种共性可能是一些相同的属性,也可能是一些相同的动作.通过总结,我们能够清晰的划 ...

  4. Java基础学习第十三讲:Java面向对象---嵌套类

    Java面向对象-嵌套类.内部类.匿名类 一.static静态 在<Java编程思想>有这样一段话: "static方法就是没有this的方法.在static方法内部不能调用非静 ...

  5. Java基础学习第二十讲:Java序列化

    Java序列化 一.序列化和反序列化 序列化:指堆内存中的java对象数据,通过某种方式把对存储到磁盘文件中,或者传递给其他网络节点(网络传输).这个过程称为序列化,通常是指将数据结构或对象转化成二进 ...

  6. Java基础学习第十八讲:Java异常

    Java异常 Java 中的异常(Exception)又称为例外,是一个在程序执行期间发生的事件,它中断正在执行程序的正常指令流.为了能够及时有效地处理程序中的运行错误,Java中引入了异常类的概念. ...

  7. 初学Java基础学习——抽象类和接口的区别

    初学Java基础学习--抽象类和接口的区别 一.关键字 1)抽象类的关键字 abstract class A{//定义一个抽象类: } class Test extends A{//子类使用exten ...

  8. 【读书笔记】Java基础学习之目录

    前述 :本人目前正在学习java,开发Android应用,因此重新来把java学习一遍. 本文所有资料来源于互联网,我将根据自己的学习进度,不断的将资料整合,就当作是读书笔记吧! 本文作为目录页,将不 ...

  9. 尚学堂JAVA基础学习笔记_2/2

    尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...

最新文章

  1. 【组队学习】【29期】6. 动手学数据分析
  2. 优秀网页设计各种国外站的素材
  3. 浅谈疫情下的就业形势
  4. Halcon:模版匹配
  5. centos7安装csvn
  6. 【ElasticSearch】es ResourceWatcherService 的 初始化 启动 源码解析
  7. SQL日志文件损坏或丢失造成数据库置疑的解决办法
  8. 国内著名高校飞跃手册整理
  9. 什么是超定方程,如何解?
  10. C语言——单词精确查找
  11. win 7旗舰版开机提示 :explorer.exe-无法找到入口
  12. 方正飞鸿智能信息平台产品白皮书(三)
  13. Minio过期分片上传文件清理引出的系统配置
  14. Offset is outside the bounds of the DataView
  15. Enjoying virus ⌒●ǒ●⌒
  16. Visual Studio 2010之安装Visual Studio 2010 Service Pack 1
  17. python有一对兔子,从出生后第3个月起每个月都生一对兔子
  18. 通过css和js实现流星雨效果
  19. iOS 关于音乐锁屏控制音乐(锁屏信息设置)
  20. javaFX实现登录界面并跳转

热门文章

  1. 【观察】神州数码:向云转型再提速,技术创新再发力
  2. Java集合系列(一):List、Map、Set的基本实现原理总结
  3. 发布订阅模式vs观察者模式
  4. Java程序员应该如何提升自己呢
  5. [Go]获取当前时间戳秒/毫秒/纳秒 转成字符串string
  6. java ifpresent_java – 正确使用Optional.ifPresent()
  7. (C/C++)数据结构所需的程序语言基础(一)数据类型、运算符及表达式
  8. sapjco3使用详解
  9. Luminati LPM在Linux下安装教程
  10. 算法设计与分析课程复习笔记11——单源最短路径