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

形参和返回值

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

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

接口名作为形参和返回值

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

内部类

内部类概述

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

格式:

   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()返回当前时间(以毫秒为单位)

Object类的概述

Object是类层次结构的根,每个类都可以将Object作为超类。所有类都直接或者间接的继承自该类

方法名说明
public String toString返回对象的字符串表示形式。建议所有子类重写该方法,自动生成
public boolean equals(Object obj)比较对象是否相等。默认比较地址,重写可以比较内容,自动生成
    原文作者:双眼皮的小眼睛
    原文地址: https://www.cnblogs.com/energy-xjq/p/third_day.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞