【java——面向对象】:抽象方法、接口、枚举、内部类、包装类、注解、Lambda 表达式语法

一、抽象方法

  1.抽象方法

   抽象类中的方法不能确定如何进行{}方法体实现,称之为抽象方法。

    抽象方法只需声明,而无需实现。

    定义了抽象方法的类必须是用abstract修饰的抽象类。

2.抽象方法和空方法区分

  

3.抽象类抽象方法

二、接口

  是由一些常量和抽象方法组成的reshuffle的抽象类(一定全部都是抽象方法)

  通过接口解决了java语言不支持多重继承的限制问题

1.接口的定义

2.接口特性

  • 接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
  • 接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。
  • 接口中的方法都是公有的。

例如:

/* 文件名 : Animal.java */
interface Animal {
   public void eat();
   public void travel();
}

3.接口的实现

三、内部类

1.认识内部类

2.分类

 

 2.1成员式内部类

 

2.1.1成员内部类的对象构造方法

2.1.2成员内部类的访问关系

     内部类可以直接访问外部类的成员变量和成员方法,外部的praivate变量也可以直接在内部类中访问 。

    外部类不可以直接访问内部类的成员变量和成员方法,外部类必须先生成一个内部类对象实例,通过内部类的对象实例间接访问内部类成员

2.2静态内部类

 在外部类当中国访问内部类成员需要new,就和平时使用类是一样的

2.3局部内部类

   在方法体内定义一个类

2.3.1规则

    局部内部类是一个局部变量,只在其方法体内部有效

     局部内部类中,可以使用方法中定义的局部变量。如果局部内部类访问了一个局部变量,那么该局部变量必须使用final修饰

    但是在方法中,不可以直接访问局部内部类的变量(就是需要先new,因为他在类的外部)。

    需要先生成局部内部对象实例,再间接访问内部类

    局部内部类不可以定义权限访问修饰符

2.4匿名内部类

 四、包装类

     1.定义

     “包装类”将基本数据类型封装成为Java类,可以采用类和对象的方式处理基本类型数据。

  2.对应基本数据类型

    

 3.自动装箱与拆箱

   3.1自动装箱:就是Java自动将原始类型值转换成对应的包装类对象

   3.2自动拆箱:自动将包装类对象转换成对应的原始类型值

  3.3为什么要装箱与拆箱

          对于CPU来说,处理一个完整的对象,需要很多的指令,对于内存来说,又需要很多的内存。如果连整数都是对象,那么性能自然很低。
于是创造了这样一种机制,使得这些基本类型在一般的编程中被当作非对象的简单类型处理,在另一些场合,又允许它们被视作是一个对象。
这就是装箱和拆箱。
       作用:为了保证通用性和提高系统性能
       一种最普通的场景是调用一个包含类型为Object的参数的函数(方法),该Object可支持任意 类型,以便通用。当你需要将一个值类型传入容器时,就需要装箱了。
另一种的用法,就是一个泛型 的容器,同样是为了保证通用,而将元素定义为Object类型的,将值类型的值加入该容器时,需要装箱。

4.Object中常用方法

   4.1字符串比较

   ==:判断两个字符串在内存中的首地址,即判断是否是同一个字符串对象

    equals():检查组成字符串内容的字符是否完全一致

五、枚举——关键字:enum

    1.使用

 

    2.方法

int compareTo( E o): 比较此枚举与指定对象的顺序

String Name(): 返回此枚举常量的名称。

values():返回枚举类中所有的值。

ordinal():方法可以找到每个枚举常量的索引,就像数组索引一样。

valueOf():方法返回指定字符串值的枚举常量。

String toString():返回此枚举常量的字符串格式。

例:

enum Color
{
    RED, GREEN, BLUE;
}
 
public class Test
{
    public static void main(String[] args)
    {
        // 调用 values()
        Color[] arr = Color.values();
 
        // 迭代枚举
        for (Color col : arr)
        {
            // 查看索引
            System.out.println(col + " at index " + col.ordinal());
        }
 
        // 使用 valueOf() 返回枚举常量,不存在的会报错 IllegalArgumentException
        System.out.println(Color.valueOf("RED"));
        // System.out.println(Color.valueOf("WHITE"));
    }
}

输出:

RED at index 0
GREEN at index 1
BLUE at index 2
RED

六、注解

   1.注解

       注解主要用于告知编译器要做什么事情。 注解并不影响程序代码的运行

     

 例如:

 

七、Lambda 表达式语法

        1.->

       ->是Lambda运算符,可以表达成“成了”或“进入”。

        

 

 

例如:

1. 不需要参数,返回值为 5 
  () -> 5              
2. 接收一个参数(数字类型),返回其2倍的值 
 x -> 2 * x 
3. 接受2个参数(数字),并返回他们的差值 
(x, y) -> x – y 
4. 接收2个int型整数,返回他们的和 
(int x, int y) -> x + y 
5. 接受一个 string 对象,并在控制台打印,不返回任何值
 (String s) -> System.out.print(s) 

2.方法引用

    2.1.格式:目标引用+分隔符::+方法

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值