面向对象与面向过程:

  面向对象(OOP)与面向过程 二者都是一种思想,面向对象是相对于面向过程而言的。

  面向过程,强调的是功能行为。面向对象,将功能封装进对象,强调具备了功能的对象。

  面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。

  面向对象的三大特征: 封装 (Encapsulation) 、继承 (Inheritance) 、多态 (Polymorphism)。

  面向对象思想概述:

  

  程序员从执行者转化成了指挥者。

  完成需求时: 先去找具有所需功能的对象来用。 如果该对象不存在,那么创建一个具有所需功能的对象。 这样简化开发并提高复用。

  类(class)和对象(object)是面向对象的核心概念。

  类:是对一类事物描述,是抽象的、概念上的定义。

  对象:是实际存在的该类事物的每个个体,因而也称实例(instance)。

java类及类的成员:

   属 性:对应类中的成员变量。

   行 为:对应类中的成员方法。

  类的格式:

  

  步骤:

  定义类(考虑修饰符、类名)。

  编写类的属性(考虑修饰符、属性类型、属性名、初始化值)。

  编写类的方法(考虑修饰符、返回值类型、方法名、形参等)。

  

属性:

   成员变量与局部变量:

  成员变量与局部变量的区别:

 方法:

构造器:

  构造器的重载:

对象的创建:

  java类的实例化,即创建类的对象。  

  当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外的变量类型都是引用类型。

  创建对象的格式:

  内存分析:

  匿名对象:

  生命周期:

博客:https://www.cnblogs.com/MOBIN/p/4853901.html

this关键字:

  this的作用:

  1.当形参与成员变量重名时,如果在方法内部需要使用成员变量,必须添加this来表明该变量时类成员。

  2.在任意方法内,如果使用当前类的成员变量或成员方法可以在其前面添加this,增强程序的阅读性。

  3.this可以作为一个类中,构造器相互调用的特殊格式。

  注意:

  1.使用this()必须放在构造器的首行!

  2.使用this调用本类中其他的构造器,保证至少有一个构造器是不用this的。

封装: 

  Java中通过将数据声明为私有的(private),再提供公共的(public)方法:getXxx()和setXxx()实现对该属性的操作,以实现下述目的:

  •    隐藏一个类中不需要对外提供的实现细节;
  •   使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;
  •   便于修改,增强代码的可维护性;

  四种访问权限修饰符:

  Java权限修饰符public、protected、private置于类的成员定义前,用来限定对象对该类成员的访问权限。

  注意:

  对于class的权限修饰只可以用public和default(缺省)。

  public类可以在任意地方被访问。

  default类只可以被同一个包内部的类访问。

 Java三大特征:https://www.cnblogs.com/ibalintha/p/3897821.html

 

Java的高级特性:

  1、关键字static

  当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,例如所有的中国人都有个国家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量。

  类属性、类方法的设计

  类属性作为该类各个对象之间共享的变量。在设计类时,分析哪些类属性不因对象的不同而改变,将这些属性设置为类属性。

  相应的方法设置为类方法。 如果方法与调用者无关,则这样的方法通常被声明为类方法,由于不需要创建对象就可以调用类方法,从而简化了方法的调用

  2、单例设计模式:

  设计模式:是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式就像是经典的棋谱,不同的棋局,我们用不同的棋谱,免去我们自己再思考和摸索。

  所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造方法的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部仍可以产生该类的对象。因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以,指向类内部产生的该类对象的变量也必须定义成静态的。

  饿汉式:

  懒汉式:

  3、初始代码块:

  一个类中初始化块若有修饰符,则只能被static修饰,称为静态代码块(static block ),当类被载入时,类属性的声明和静态代码块先后顺序被执行,且只被执行一次。

  

  

  举例:

  

  

  4、final关键字

  5、抽象类

  随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象,以至于它没有具体的实例,这样的类叫做抽象类。

 

  6、接口

  有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果。

  接口(interface)是抽象方法和常量值的定义的集合。

  从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。

   实现接口类: class SubClass implements InterfaceA{ }

  一个类可以实现多个接口,接口也可以继承其它接口。

  接口总结:

  通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。

  通过接口可以指明多个类需要实现的方法,一般用于定义对象的扩张功能。

  接口主要用来定义规范。解除耦合关系。

  接口与抽象类的区别:

  在开发中,一个类不要去继承一个已经实现好的类,要么继承抽象类,要么实现接口。

  7、内部类

  内部类特征:

  匿名内部类:

  匿名内部类不能定义任何静态成员、方法和类,只能创建匿名内部类的一个实例。

  一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。

   面向对象汇总:

Java继承之面向对象的更多相关文章

  1. Java—继承、封装、抽象、多态

    类.对象和包 1) 面向对象编程(Object Oriented Programming ,简称 OOP):20世纪70年代以后开始流行. 2) 结构化编程与面向对象编程的区别: A. 在结构化编程中 ...

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

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

  3. 15、Java中级进阶 面向对象 继承

    1.何为面向对象 其本质是以建立模型体现出来的抽象思维过程和面向对象的方法(百度百科)是一种编程思维,也是一种思考问题的方式 如何建立面向对象的思维呢?1.先整体,再局部2.先抽象,再具体3.能做什么 ...

  4. 111 01 Android 零基础入门 02 Java面向对象 04 Java继承(上)02 继承的实现 01 继承的实现

    111 01 Android 零基础入门 02 Java面向对象 04 Java继承(上)02 继承的实现 01 继承的实现 本文知识点: 继承的实现 说明:因为时间紧张,本人写博客过程中只是对知识点 ...

  5. java学习之面向对象(4)

    之前介绍了java面向对象三大特性之一封装,现在来说说三大特性之一继承和抽象类.这些只是我个人的认识,不足之处还请见谅. 1. 继承是面向对象的三大特征之一,那么何为继承呢? 继承是指一个对象直接使用 ...

  6. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  7. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  8. 黑马程序员——【Java基础】——面向对象(二)异常机制、包(Package)

    ---------- android培训.java培训.期待与您交流! ---------- 一.异常机制 (一)异常概述 1.异常:就是程序在运行时出现不正常情况. 2.异常类:程序在运行时,出现的 ...

  9. Java中的面向对象

    Java中的面向对象 在软件开发的学习中, 我最先接触的开发语言就是java,但都是简单的函数和循环数组的应用.说道面向对象,第一次看到这个词的时候还是在C#的学习过程中,我记得当时PPT上霸气的解释 ...

随机推荐

  1. Spring IoC BeanDefinition 的加载和注册

    前言 本系列全部基于 Spring 5.2.2.BUILD-SNAPSHOT 版本.因为 Spring 整个体系太过于庞大,所以只会进行关键部分的源码解析. 本篇文章主要介绍 Spring IoC 容 ...

  2. iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3306 -j DNAT --to-destination 172.17.0.2:3306 ! -i docker0: iptables: No chain/target/match by that name

    今天使用docker运行mysql时报错, 执行命令: docker run --restart=always --name mysql5.7 -p 3306:3306 -v /data/mysql/ ...

  3. fatal error C1189: #error : This file requires _WIN32_WINNT to be #defined at least to 0x0403. Value 0x0501 or higher is recommended.

    说了原因,下面是修改方法,就是在stdafx.h文件中修改相关的定义,修改完后的效果应该如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #ifndef WINVER ...

  4. 【Spring】原来SpringBoot是这样玩的

    菜瓜:我自己去调Mvc的源码差点没给Spring的逻辑秀死...难受 水稻:那今天咱们看一个简单易用的SpringBoot吧 菜瓜:可以,这个我熟悉 水稻:熟悉? 菜瓜:当我没说,请开始你的表演 水稻 ...

  5. 第二部分用户交互程序开发,通过paramiko记录ssh会话记录

    需求及任务:实现一个给用户登录的界面(通过ssh登到堡垒机上,然后给它展现一个命令行的页面,然后他选择登哪台机器,一选择就连上去且把日志也记录下来). 先在admin创建几条组数据并与用户关联如下图: ...

  6. 禁用rm命令

    (1)[root@tf ~]# alias rm='echo do not use rm command'[root@tf ~]# vim /etc/profile   alias rm='echo ...

  7. windows 创建python独立开发环境

    参考廖雪峰教程:https://www.liaoxuefeng.com/wiki/1016959663602400/1019273143120480 进去的方式需要修改,找到自己创建的文件目录 在控制 ...

  8. HTTPS连接建立过程(单向&双向)

    HTTPS连接建立过程(单向&双向) 什么是https SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Securit ...

  9. Java1.8的HashMap源码解析

    java1.8是现在用的最多的版本,hashmap是现在用的最多的map,今天我们试图分析一下源码. 数据结构 首先我们注意到数据是存放在一个Node数组里面 transient Node<K, ...

  10. EOS基础全家桶(十四)智能合约进阶

    简介 通过上一期的学习,大家应该能写一些简单的功能了,但是在实际生产中的功能需求往往要复杂很多,今天我就继续和大家分享下智能合约中的一些高级用法和功能. 使用docker编译 如果你需要使用不同版本的 ...