1. 参数传递

1.1 类名作为形参和返回值

1、类名作为方法的形参

方法的形参是类名,其实需要的是该类的对象

实际传递的是该对象的【地址值】

2、类名作为方法的返回值

方法的返回值是类名,其实返回的是该类的对象

实际传递的,也是该对象的【地址值】

 1 class Cat {
2   public void eat() {
3     System.out.println("猫吃鱼");
4   }
5 }
6 class CatOperator {
7   public void useCat(Cat c) { //Cat c = new Cat();
8     c.eat();
9   }
10   public Cat getCat() {
11     Cat c = new Cat();
12   return c;
13   }
14 }
15 public class CatDemo {
16   public static void main(String[] args) {
17     //创建操作类对象,并调用方法
18     CatOperator co = new CatOperator();
19     Cat c = new Cat();
20     co.useCat(c);
21     Cat c2 = co.getCat(); //new Cat()
22     c2.eat();
23   }
24 }

1.2 抽象类作为形参和返回值

抽象类作为形参和返回值

方法的形参是抽象类名,其实需要的是该抽象类的子类对象

方法的返回值是抽象类名,其实返回的是该抽象类的子类对象

 1 abstract class Animal {
2   public abstract void eat();
3 }
4 class Cat extends Animal {
5   @Override
6   public void eat() {
7     System.out.println("猫吃鱼");
8   }
9 }
10 class AnimalOperator {
11   public void useAnimal(Animal a) { //Animal a = new Cat();
12     a.eat();
13   }
14   public Animal getAnimal() {
15     Animal a = new Cat();
16   return a;
17   }
18 }
19 public class AnimalDemo {
20   public static void main(String[] args) {
21     //创建操作类对象,并调用方法
22     AnimalOperator ao = new AnimalOperator();
23     Animal a = new Cat();
24     ao.useAnimal(a);
25     Animal a2 = ao.getAnimal(); //new Cat()
26     a2.eat();
27   }
28 }

1.3 接口名作为形参和返回值

接口作为形参和返回值

方法的形参是接口名,其实需要的是该接口的实现类对象

方法的返回值是接口名,其实返回的是该接口的实现类对象

 1 interface Jumpping {
2   void jump();
3 }
4 class JumppingOperator {
5   public void useJumpping(Jumpping j) { //Jumpping j = new Cat();
6     j.jump();
7   }
8   public Jumpping getJumpping() {
9     Jumpping j = new Cat();
10   return j;
11   }
12 }
13 class Cat implements Jumpping {
14   @Override
15   public void jump() {
16     System.out.println("猫可以跳高了");
17   }
18 }
19 public class JumppingDemo {
20   public static void main(String[] args) {
21     //创建操作类对象,并调用方法
22     JumppingOperator jo = new JumppingOperator();
23     Jumpping j = new Cat();
24     jo.useJumpping(j);
25     Jumpping j2 = jo.getJumpping(); //new Cat()
26     j2.jump();
27   }
28 }

2. 内部类

2.1 内部类的基本使用

内部类概念

  在一个类中定义一个类。举例:在一个类A的内部定义一个类B,类B就被称为内部类

内部类定义格式

1 class 外部类名{
2   修饰符 class 内部类名{
3   }
4 }

内部类的访问特点

  内部类可以直接访问外部类的成员,包括私有

  外部类要访问内部类的成员,必须创建对象

2.2 成员内部类

成员内部类的定义位置

  在类中方法,跟成员变量是一个位置

外界创建成员内部类格式

1 外部类名.内部类名 对象名 = 外部类对象.内部类对象;

成员内部类的推荐使用方案

  将一个类,设计为内部类的目的,大多数都是不想让外界去访问,所以内部类的定义应该私有化,私有化之后,再提供一个可以让外界调用的方法,方法内部创建内部类对象并调用。

2.3 局部内部类

局部内部类定义位置

  局部内部类是在方法中定义的类

局部内部类方式方式

  局部内部类,外界是无法直接使用,需要在方法内部创建对象并使用

  该类可以直接访问外部类的成员,也可以访问方法内的局部变量

 1 class Outer {
2   private int num = 10;
3   public void method() {
4     int num2 = 20;
5     class Inner {
6       public void show() {
7         System.out.println(num);
8         System.out.println(num2);
9       }
10     }
11   Inner i = new Inner();
12   i.show();
13   }
14 }
15 public class OuterDemo {
16   public static void main(String[] args) {
17     Outer o = new Outer();
18     o.method();
19   }
20 }

2.4 匿名内部类

匿名内部类的前提

  存在一个类或者接口,这里的类可以是具体类也可以是抽象类

匿名内部类的格式

1 new 类名 ( ) { 重写方法 } new 接口名 ( ) { 重写方法 }

匿名内部类的本质

  本质:是一个继承了该类或者实现了该接口的子类匿名对象

匿名内部类的细节

  匿名内部类可以通过多态的形式接受

1 Inter i = new Inter(){
2   @Override
3   public void method(){
4   }
5 }

匿名内部类直接调用方法

 1 interface Inter{
2   void method();
3 }
4 class Test{
5   public static void main(String[] args){
6     new Inter(){
7       @Override
8       public void method(){
9         System.out.println("我是匿名内部类");
10       }
11     }.method(); // 直接调用方法
12   }
13 }

2.4 匿名内部类在开发中的使用

匿名内部类在开发中的使用

  当发现某个方法需要,接口或抽象类的子类对象,我们就可以传递一个匿名内部类过去,来简化传统的代码

 1 interface jump{
2 public abstract void jump();
3 }
4
5 class cat implements jump{
6 @Override
7 public void jump(){
8 System.out.println("猫跳高");
9 }
10 }
11
12 class dog implements jump{
13 @Override
14 public void jump(){
15 System.out.println("狗跳高");
16 }
17 }
18
19 class jo{
20 public void method(jump j){
21 j.jump();
22 }
23 }
24
25 public class JumpingDemo {
26 public static void main(String[] args) {
27 jo j = new jo();
28 jump c = new cat();
29 j.method(c);
30 System.out.println("------");
31 jump d = new dog();
32 j.method(d);
33 System.out.println("------");
34 j.method(new jump() {
35 @Override
36 public void jump() {
37 System.out.println("鱼跳高");
38 }
39 });
40 }
41 }

3. 常用API

3.1 Math

1、Math类概述

  Math 包含执行基本数字运算的方法

2、Math中方法的调用方式

  Math类中无构造方法,但内部的方法都是静态的,则可以通过 类名.进行调用

3、Math类的常用方法

方法名 说明
public static int abs(int a) 返回参数的绝对值
public static double ceil(double a) 返回大于或等于参数的最小double值,等于一个整数
public static double floor(double a) 返回小于或等于参数的最大double值,等于一个整数
public static int round(float a) 按照四舍五入返回最接近参数的int
public static int max(int a,int b) 返回两个int值中的较大值
public static int min(int a,int b) 返回两个int值中的较小值
public static double pow (double a,double b) 返回a的b次幂的值
public static double random() 返回值为double的正值,[0.0,1.0)

3.2 System

System类的常用方法

方法名 说明
public static void exit(int status) 终止当前运行的 Java 虚拟机,非零表示异常终止
public static long currentTimeMillis() 返回当前时间(以毫秒为单位)

3.3 Object类的toString方法

Object类概述

  Object 是类层次结构的根,每个类都可以将 Object 作为超类。所有类都直接或者间接的继承自该类, 换句话说,该类所具备的方法,所有类都会有一份

toString方法的作用

  以良好的格式,更方便的展示对象中的属性值

3.4 Object类的equals方法

equals方法的作用

  用于对象之间的比较,返回true和false的结果

重写equals方法的场景

  不希望比较对象的地址值,想要结合对象属性进行比较的时候。

3.5 Arrays

Arrays的常用方法

方法名 说明
public static String toString(int[] a) 返回指定数组的内容的字符串表示形式
public static void sort(int[] a) 按照数字顺序排列指定的数组

工具类设计思想

  1、构造方法用 private 修饰

  2、成员用 public static 修饰

JavaSE12-内部类&API的更多相关文章

  1. spark之JDBC开发(实战)

    一.概述 Spark Core.Spark-SQL与Spark-Streaming都是相同的,编写好之后打成jar包使用spark-submit命令提交到集群运行应用$SPARK_HOME/bin#. ...

  2. Java基础第三天--内部类、常用API

    形参和返回值 抽象类名作为形参和返回值 方法的形参是抽象类名,其实需要的是该抽象类的子类对象 方法的返回值是抽象类名,其实返回的是该抽象类的子类对象 接口名作为形参和返回值 方法的形象是接口名,其实需 ...

  3. PHP反射API

    近期忙着写项目,没有学习什么特别新的东西,所以好长时间没有更新博客.我们的项目用的是lumen,是基于laravel的一个轻量级框架,我看到里面用到了一些反射API机制来帮助动态加载需要的类.判断方法 ...

  4. Android多媒体--MediaCodec 中文API文档

    *由于工作需要,需要利用MediaCodec实现Playback及Transcode等功能,故在学习过程中翻译了Google官方的MediaCodec API文档,由于作者水平限制,文中难免有错误和不 ...

  5. Java中的内部类(回调)

    一.内部类的主要作用如下: 1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类 2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据 3. 内部类所 ...

  6. Unit05 - 抽象类、接口和内部类(上)

    Unit05 - 抽象类.接口和内部类(上) 1.static final常量:  1)必须声明同时初始化  2)通过类名来访问,不能被改变  3)建议:常量名所有字母都大写(多个单词间用_)  4) ...

  7. PHP : Reflection API

    PHP Reflection API是PHP5才有的新功能,它是用来导出或提取出关于类.方法.属性.参数等的详细信息,包括注释. PHP Reflection API有: class Reflecti ...

  8. [转载] 3. JebAPI 之 jeb.api.ast

    本文转载自: https://www.zybuluo.com/oro-oro/note/143651 0. 序 Jeb 本身是支持变量重命名的,所以,混淆了的变量名.类名可以修改. 实际上,它还可以做 ...

  9. 黑马程序员——【Java基础】——面向对象(一)概述、类与对象、继承、抽象类、接口、多态、内部类

    ---------- android培训.java培训.期待与您交流! ---------- 一.面向对象概述 1.面向对象:是一个很抽象的概念,它相对面向过程而言,是一种程序设计的思想. 2.面向对 ...

  10. Android开发-API指南-创建 Content Provider

    Creating a Content Provider 英文原文:http://developer.android.com/guide/topics/providers/content-provide ...

随机推荐

  1. [原题复现][极客大挑战 2019]HardSQL(updatexml报错注入)

    简介  原题复现:  考察知识点:SQL注入(报错注入,绕过过滤)  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台 特别感谢!) 榆林学院内可使用信安协会内部的CTF训练平 ...

  2. tp5 上传视频方法

    控制器调用 /** * 视频上传 */ public function video_add(){ if (request()->isPost()){ $video = $_FILES['vide ...

  3. 理解Volatile关键字,其实看这一篇就够了,写的非常细致

    前言 volatile是Java虚拟机提供的轻量级的同步机制. volatile关键字作用是什么? 两个作用: 1.保证被volatile修饰的共享变量对所有线程总数可见的,也就是当一个线程修改了一个 ...

  4. 凭借着这份面经,我拿下了字节,美团的offer!

    最近经常有粉丝私信问我问了一些诸如秋招该怎么复习的问题,我就想顺便把回答整理发一发.我也是把之前面试的一些经历经验和身边的人面试的经验总结了一下放在下面. 前期准备规划: 如果秋招的话一般过年回来就可 ...

  5. ABBYY FineReader 15如何比较文档?

    ABBYY FineReader 15 OCR文字识别软件能帮助用户快速地对比两个文档间的差异,适合用于审阅.修改文档,发现新旧版本差异,预防输出错误版本等情况.此功能既能用于对比同一格式文档的不同版 ...

  6. Vegas常见问题解答,如何处理预览卡顿

    制作视频并不是简单的拼拼凑凑,很多时候我们都需要给视频加上一些视频特效或转场等效果,如果只是图片素材的话,还不会出现卡顿的现象,但是当你给视频添加了效果后,在预览窗口看到的就是非常卡顿了.除了本身计算 ...

  7. iMindMap组织结构视图在工作上的应用体现在哪些方面

    iMindMap的组织结构图视图,可以将信息.想法和流程整合起来.本文,我们将讲述iMindMap组织结构图视图的3个实例应用. iMindMap组织结构视图 简化您的工作流程 通过在工作中构建组织结 ...

  8. Eclipse的环境配置

    1.想要配置Eclipse的环境,就要先下载Eclipse,并安装它,不会下载安装的小伙伴可以点击下面给的链接,里面有我写的详细的教程,这里就不重复了 Eclipse下载与安装:https://blo ...

  9. J2EE基本概念

    XO POJO:Plain Ordinary Java Object,简单java对象 PO:Persistant Object,持久层对象(对应数据库中一条记录) BO:Business Objec ...

  10. 终于有人把鸿蒙OS讲明白了,大佬讲解!快收藏!

    来自 | GitHub科技 本文面向的是开发人员,主要想通过科普让大家了解一下鸿蒙开发.接下来,我想给大家科普一下这个这么火的鸿蒙系统. 到底什么是鸿蒙 OS 在官网上看到鸿蒙 OS 的简介是,分布式 ...