Java基础第三天--内部类

Posted energy-xjq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础第三天--内部类相关的知识,希望对你有一定的参考价值。

形参和返回值

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

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

接口名作为形参和返回值

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

内部类

内部类概述

  • 内部类:就是在一个类中定义一个类
  • 内部类的定义格式

格式:

   public class 类名{
       修饰符 class 类名{
       }
   }

范例:

    public class Outer{
        public class Inner{
        }
    }

成员内部类

按照内部类在类中定义的位置不同,可以分为如下两种形式

  • 在类的成员位置:成员内部类
  • 在类的局部位置:局部内部类

成员内部类,外界如何创建对象使用呢?

  • 格式:外界类名.内部类名 对象名 = 外部类对象.内部类对象;
  • 范例:Outer.Inner oi = new Outer().newInner();
    //成员内部类
    public class Outer {
        private int num = 10;

        /*
        public class Inner {
            public void show(){
                System.out.println(num);
            }
        }
        */
        private class Inner {
            public void show(){
                System.out.println(num);
            }
        }

        public void method(){
            Inner i = new Inner();
            i.show();
        }
    }
    //测试类
    public class InnerDemo {
        public static void main(String[] args){
//          Outer.Inner oi = new Outer().new Inner();
//          oi.show();//10

            Outer o = new Outer();
            o.method();//10
        }
    }

局部内部类

局部内部类是在方法中定义的类,所以外界是无法直接使用,需要在方法内部创建对象并使用该类可以直接访问外部类的成员,也可以访问方法内的局部变量

    //局部内部类
    public class Outer {
        private int num = 10;

        public void method(){
            int num2 = 20;
            class Inner{
                public void show(){
                    System.out.println(num); 
                    System.out.println(num2);
                }
            } 

            Inner i = new Inner();  
            i.show();
    //测试类
    public class OuterDemo {
        public static void main(String[] args){
            Outer o = new Outer();
            o.method();
            //10
            //20
        }
    }

匿名内部类

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

  • 格式:
   new 类名或者接口名(){
       重写方法;
   }
  • 范例:
    new Inter(){
        public void show(){
        }
    }

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

    public class Outer {
        public void method() {
            /*
            new Inter() {
                @override
                public void show() {
                    System.out.println("匿名内部类");
                }
            }.show();
            */
            Inter i = new Inter(){
                @override
                public void show() {
                    System.out.println("匿名内部类");
                }
            };
            //多次调用
            i.show();
            i.show();
        }
    }
    public interface Inter {
        void show();
    }
    public class OuterDemo {
        public static void main(String[] args){
            Outer o = new Outer();
            o.method();
        }
    }

常用API

Math类概述

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

Math类的常用方法

方法名 说明
public static int abs(inta) 返回参数的绝对值
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)

System类概述

System包含几个有用的类字段和方法,它不能被实例化

System类的常用方法

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

以上是关于Java基础第三天--内部类的主要内容,如果未能解决你的问题,请参考以下文章

java学习--基础知识进阶第三天--笔记

再回首Java第三天

IT十八掌作业_java基础第三天_数组

python基础自学 第三天

PHP基础面试题 – 第三天

java基础第三天_数组