文章目录

  • 面向对象
    • 1 继承
    • 2 接口
      • 2.1 Comparable和Comparator
    • 3 内部类
      • 3.1 非静态内部类
      • 3.2 静态内部类
      • 3.3 局部内部类
      • 3.4 匿名内部类
    • 4 Lambda表达式
    • 5 函数式接口

面向对象

  • 封装:把对象的信息隐藏在对象内部
  • 继承:子类可以拥有父类的所有属性和方法,子类可以实现自己的属性和方法
  • 多态:一个对象具有多种状态,体现在父类引用指向子类实例、或在程序运行期间确定执行哪个方法

1 继承

Java中只支持单继承

super:子类中使用super关键字访问超类,子类构造函数需要先用super构造超类

this:表示当前实例

final:修饰变量表示常量;修饰方法表示不可以被重写;修饰类表示不可以被继承

static:修饰变量或方法时表示静态变量和静态方法,属于类;修饰代码块时,只会在类加载时执行一次

abstract:修饰方法表示抽象方法,不提供实现,需要子类实现,一个类如果有抽象方法,那就是抽象类;修饰类表示抽象类,抽象类不能被实例化,抽象类中可以有实例方法,抽象类中可以没有抽象方法,子类必须实现抽象类中所有抽象方法,否则子类也是抽象类

类内部 当前包 子类 外部包
public
protected
default
private

2 接口

Java支持实现多个接口

超类和接口方法冲突:超类优先,两个接口实现同名的方法则报错

2.1 Comparable和Comparator

// Comparable
class T implements Comparable<T>{...@Overridepublic int compareTo(T o) {return ...;}
}// Comparator
Collections.sort(list, new Comparator<T>() {@Overridepublic int compare(T o1, T o2) {return ...;}
});

3 内部类

内部类是定义在另一个类中的类

  • 内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据
  • 内部类可以对同一个包中的其他类隐藏起来
  • 当要定义一个回调函数时,可以使用匿名内部类

3.1 非静态内部类

class A {class B {}
}public class Main {public static void main(String[] args) {A a = new A();A.B b = a.new B();}
}

3.2 静态内部类

class A {static class B {}
}public class Main {public static void main(String[] args) {A a = new A();A.B b = new A.B();}
}

3.3 局部内部类

public void ju() {class C {}C c = new C();
}

3.4 匿名内部类

public interface Say {void sayHello();
}public class Main {public static void main(String[] args) {Say say = new Say() {@Overridepublic void sayHello() {System.out.println("123");}};}
}

4 Lambda表达式

使用lambda表达式,允许把函数作为方法的参数

// 语法
() -> expression;
() -> {expression1; expression2;}
x -> expression;
(x, y) -> expression;

5 函数式接口

函数式接口是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口

通过函数来表示接口中未实现的方法

public interface Say {void sayHello();
}public class Main {public static void main(String[] args) {Say say = () -> System.out.println("123");say.sayHello();}
}

Java基础(二)——面向对象相关推荐

  1. Java基础-初识面向对象编程(Object-Oriented-Programming)

    Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...

  2. 20175212童皓桢 Java实验二-面向对象程序设计实验报告

    20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...

  3. 【Java基础】面向对象(三)

    [Java基础]面向对象(三) 一.多态 概念 引用类型转换 二.Object类 概述 常用方法 三.抽象类 抽象类与抽象方法的定义 注意事项 四.接口 概述 接口定义 含有抽象方法 含有默认方法和静 ...

  4. 一文带你深入理解【Java基础】· 面向对象编程(下)②代码块、final和abstract

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  5. 逆向爬虫34 Java基础二

    逆向爬虫34 Java基础二 目的 总结java和之前学过语言之间相似和不同的地方,方便记忆 关于Object ( 上节回顾 ) Object可以泛指java中的任何对象 -> 父类可以泛指子类 ...

  6. Java基础之面向对象的概念 继承---组合----枚举类

    Java基础之面向对象的概念 继承---组合----枚举类 本章作为面向对象概念的最后一篇,但是作为一名java程序员在面向对象的这条路上还很长. 一.继承与组合简介 继承是实现类重用的重要手段,但是 ...

  7. Java基础篇--面向对象(Object Oriented)

    Java基础篇--面向对象(Object Oriented) 1. 面向对象概念 1.1 什么事面向对象 1.2 理解面向对象 1.3 面向对象的特点 1.4 面向对象开发设计特征 2. 类与对象 2 ...

  8. JAVA基础学习--面向对象

    JAVA基础学习–面向对象 1.面向对象与面向过程: 面向过程:就代表从头到位,每一步都需要我们来完成,例如洗衣服,首先收拾脏衣服.接上水.到洗衣液.搓.倒水.拧干.晾晒.每一步都需要我们来完成. 面 ...

  9. Java基础(08) 面向对象

    Java基础(八)-- 面向对象 ​ 面向对象(Object Oriented Programming, 简称OOP )是Java基础学习的重点,必须掌握每个细节,接下来对面向对象的学习主要围绕以下三 ...

  10. JAVA实验二 面向对象程序设计

    一.实验目的 通过编程和上机实验,掌握类和构造方法的定义及创建对象的方法,掌握类的封装及继承原则,正确使用重载和覆盖等多态概念设计可复用方法,熟悉包.接口的使用方法,掌握面向对象的程序设计方法. 二. ...

最新文章

  1. Redis持久化 - RDB和AOF
  2. 自动驾驶中的计算机视觉
  3. 【Python CheckiO 题解】Between Markers (simplified)
  4. LNMP环境--搭建Discuz论坛
  5. js技术要点---document.write()方法在IE浏览器和火狐浏览器下面的兼容性问题
  6. microsoft visual studio遇到了问题,需要关闭
  7. 有序列表ol与无序列表ul用法
  8. Javascript传奇
  9. 计算机软考深圳积分,2020年软考证书能为深圳积分入户加分吗?
  10. 我国超级计算机的发展成就,中国最近的科技发展成就
  11. Scrapy报错之:Request object has no attribute dont_filter
  12. Leetcode 2127. 参加会议的最多员工数
  13. 9个设计师都在用的图片素材网站,风格齐全,高清免费
  14. 2021年烟花爆竹生产单位安全生产管理人员免费试题及烟花爆竹生产单位安全生产管理人员考试总结
  15. G - RMQ and RAQ (cugb2023-s)
  16. 领英大数据:经济寒冬,“全思维IT工程师”成企业新宠
  17. 计算机主机与外部交换的部件是,主机与外部设备的信息交换.PPT
  18. 淘宝二面试常见问题的答案来了,你看了吗?(二面及答案)
  19. tta部署_TTA、丰源轮胎云平台项目战略合作交接仪式
  20. 运用Rhino,在Android上运行js代码

热门文章

  1. CSS 框模型( Box module )
  2. RequiredFieldValidator验证下拉列表框
  3. POJ1942 Paths on a Grid(组合)
  4. 徐中约与《中国近代史》 (zz)
  5. [ios2] UIView的hitTest,pointInside方法详解【转】
  6. 在windows下调试ruby192
  7. Astar2007初赛第一场的题目2
  8. WPF中ListBox的绑定
  9. 2017-3-31/socket
  10. Linux signal 编程(转载)