1.类和对象的关系

类是一个抽象的模板,对象是根据模板制造出来的,只有类建立之后,对象才可以在类中实例化对象。举个例子讲:我要用黄金浇筑一块砖,我会在一个模型里进行,这样才能有砖的形状,那模型即是类,浇筑好的砖便是对象。

2.构造函数(构造方法)和成员方法

构造函数也叫构造方法,据说之所以叫做构造函数就是为了区别普通的成员方法,构造函数与普通方法的区别在于;

A。构造函数不需要在方法名前添加返回值类型,但是 成员方法需要在方法名前添加返回值类型,“void”也是返回值类型的一种。

B。构造函数的方法名需要与类名一致,普通方法则随意。

C。构造函数包含无参构造函数和有参构造函数,其中无参构造函数如果开发人员不写出来,系统将默认添加,但是不会显示出来,成员方法则没有这种现象。

D。构造函数的语法:public 类名(形式参数列表){}         成员方法的语法: public  返回值类型 方法名(返回值参数列表){  return 返回值}

E。构造函数的目的是为了给成员变量在主类中赋初值,也就只有这个功能,

3.this关键字和super关键字

考虑这样一个问题,我们为什么需要这两个关键词?

  this的需求缘由:在一个类中代表本类对象,然后解决成员变量(成员变量也叫全局变量)和局部变量的调用冲突问题,提高代码可读性,this负责调用成员变量语法格式为:this.成员变量名

:在一个类中调用成员方法,在调用成员方法可以省略,所以一般编程中并未显式的写出来,如果要书写语法为 this.方法名();注意一点这句修饰语必须写在成员方法内的第一行。

:在一个类中调用构造函数,其中 this调用构造函数的范围是在一个构造函数内调用本类的另一个构造函数,两者不可互相调用,并且在普通成员方法内调用和被调用都是行不通的,需要注意的有使用this调用构造方法的语句必须放在构造方法内的第一行,并且只能出现一次。

super的需要缘由:我用一个小例来叙述这个点,假如父类中有个A方法,这个时候我们需要在子类中重写父类的A方法,在子类中重写A方法之后,我们在子类中叫他为B方法,这个时候 我们知道  B方法只会显示我们重写A方法后在B方法中改变的地方,而不会显示之前A方法的内容,但是有些时候 我们想要在子类中显示A方法的内容,这个时候,super诞生了,代表父类引用对象。

:super可以修饰父类的成员变量、成员方法、构造方法,语法依次为:super.成员变量、super.成员方法(【参数1,参数2】),super(【参数1,参数2。。】)

:注意一点,super调用父类构造函数的代码必须位于该构造函数的第一行,并且只能出现一次。

4.封装

封装相对以上内容来说,比较好理解,我们考虑一下,我们为什么需要封装、怎么封装、给谁封装?

给谁封装?:

我们封装的对象是“类”,是要给Java 项目中最小的一个单位进行封装。

为什么需要封装?:

无论任何程序都是由人类设计出来的,所以代码所体现的各种思维也是贴近现实的,举个例子讲:我们在生活中年龄和身高等数值是不会成为负数的,这叫非法赋值,再讲,我们的家是私密的,属于私人空间,不是任何人都可以进来的,所以我们给我们的私人空间建筑四面墙,留一个外界访问的门,这叫安全。所以封装的目的是为了控制给变量赋值时产生非法赋值的问题,再就是将类封装起来,提高安全性。

怎么封装?:

在定义一个类时,会定义这个类的属性比如讲,人这个类里 有性别和姓名等属性。那么利用一个关键字  private 来修饰这些属性,那么用这个关键词封装之后也有弊端,就是只能在本类中被调用,其他类怎么用?为了能让外界访问我们的私有属性,需要提供一些public 修饰的公有方法,其中 用来获取属性值的getXxx()方法和改变属性值的setXxx()方法,具体操作不在赘述。

5.Static关键字

见词知意,static(静态的),产生次关键字的主要原因是,例:1万个人在一所学校上学,我们不想给每个人的内存空间都加上学校名,而是想1万人公用这一个名字,所以,用static修饰的成员变量在内存空间中只有一份,不会重复创建。

static可以修饰

1.成员变量   static修饰后变为   静态变量   语法为:static 数据类型 变量名; 静态变量可以被类中所有实例共享。访问的形式是 类名.变量名

2.成员方法   static修饰后变为   静态方法   语法为:权限修饰符 static 返回值类型 方法名(){  }  静态方法的调用有两种 可以使用1、实例化一个对象 对象名.方法名调用 2、类名.方法名 。个人更加推荐第二种,因为第二种可以省略实例化对象这一步,提高效率。

3.代码块      static 修饰后变为  静态代码块 语法为 static {  方法体 } ,在这里说明一下,static是随着类的加载而加载的,类只加载一次,那么静态代码块也只加载一次。

4. 成员内部类    static 修饰后变为  静态内部类  语法为 static class 内部类名{   }。在静态内部类中只能访问外部类的静态成员,在静态内部类中可以定义静态的成员。此处关于内外部类的问题后续会针对本模块进行更加详细的研究。

补充:static不能和this、super在一个方法中共存,static不能修饰构造方法

 6.final关键字

final有最终的、无法改变的含义。

final可以修饰 变量(成员变量、局部变量),修饰的变量只能初始化,不能再次赋值,语法:final 数据类型 变量名 = 值;

final可以修饰方法,修饰的方法可以被继承但是不能被重写,语法:访问权限修饰符 final 返回值类型 方法名(){    }

final 可以修饰类,修饰的类不能被继承,继承之后则意味着将融入子类的特性,这样的话就与final不可改变的、最终的含义向悖。语法格式:final class 类名{     }

7.抽象类

抽象类的产生是因为抽象方法,为什么需要抽象方法?举例:一个富商的一个孩子要吃各种菜,但是又不确定他要吃什么菜,而这个时候富商为这个孩子请了个厨师,主要是为孩子提供服务,闲暇时候也为家庭其他普通成员服务。  那么厨师是抽象类,孩子就是抽象方法,因为抽象方法必须存在抽象类中,孩子想吃菜必须依靠厨师。那么他们两个是因为菜才联系到一起,所以菜就是一个修饰符,abstract,这个关键字只能修饰 类和方法修饰后变为抽象类、抽象方法,不可以修饰变量和构造方法。

     特性:抽象方法,抽象方法是没有方法体的,就是像上面例子讲的一样不确定自己要吃什么菜,语法为:      abstract 返回值类型 方法名(); 抽象方法必须存在抽象类中,有抽象方法存在的类中,该类必须声明为抽象类,普通方法可以存在抽象类中,抽象类中对抽象方法的要求是可有可无。

:抽象类  抽象类不可以被实例化的,因为抽象类中有可能存在抽象方法,那么抽象方法没有方法体,不可以被调用。但是,抽象类可以被继承,语法为:abstract class 类名(){     }

注意: 一个子类继承一个父类,如果父类是抽象方法,那么子类要实现(实现是接口的内容,在这里可以理解为 重写)父类的所有抽象方法,或者子类变为抽象类。

: 一个抽象类的成员可以包括:成员变量、构造方法、方法

以上为随机整理的7个知识点。

Java 面向对象 知识点基础浅谈的更多相关文章

  1. java的反射机制浅谈(转)

    原文链接:java的反射机制浅谈 一.java的反射机制浅谈 1.何谓反射机制 根据网文,java中的反射机制可以如此定义: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性 ...

  2. Java面向对象编程基础

    一.Java面向对象编程基础 1.什么是对象?Object 什么都是对象! 只要是客观存在的具体事物,都是对象(汽车.小强.事件.任务.按钮.字体) 2.为什么需要面向对象? 面向对象能够像分析现实生 ...

  3. JAVA学习(五):Java面向对象编程基础

    Java面向对象编程基础 面向对象(Object oriented programming,OOP)技术是一种强有力的软件开发方法,它採用数据抽象与信息隐藏技术,来使软件开发简单化,以达到代码重用的目 ...

  4. 【推荐】JAVA基础◆浅谈3DES加密解密

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  5. C#核心基础--浅谈类和对象的概念

    浅谈类和对象的概念 一.什么是类?什么是对象? 学习一门面向对象编程语言,我们必须得知道什么是类?什么是对象? 类(Class)实际上是对某种类型的对象定义变量和方法的原型.它表示对现实生活中一类具有 ...

  6. C#基础---浅谈XML读取以及简单的ORM实现

    背景: 在开发ASP.NETMVC4 项目中,虽然web.config配置满足了大部分需求,不过对于某些特定业务,我们有时候需要添加新的配置文件来记录配置信息,那么XML文件配置无疑是我们选择的一个方 ...

  7. java设计模式学习笔记--浅谈设计模式

    设计模式的目的 编写软件的过程中,程序员面临着来自耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战.设计模式为了让程序具有更好的 1.代码重用性(即:相同功能的代码,不用多次编写) ...

  8. java类,接口浅谈

    一般类,抽象类,接口的使用场景: 类;共同的特征和行为的抽取和封装 接口:标准,规范(功能的扩展)         需要对某个类进行功能的扩展,就让某个类实现这个接口,抽取出来称为接口   内部类: ...

  9. [转]Java虚拟机类加载机制浅谈

    Java语言是一种编译后再经过解释器执行的过程, 解释器主要就是如何处理解释Class文件的二进制字节流.JVM主要包含三大核心部分:运行时数据区,类加载器和执行引擎. 虚拟机将描述类的数据从Clas ...

随机推荐

  1. [转载]Oracle用户创建及权限设置

    出处:https://www.cnblogs.com/buxingzhelyd/p/7865194.html 权限: create session  允许用户登录数据库权限 create table  ...

  2. webservice常用两种身份验证方式

    在项目开发,我们经常会使用WebService,但在使用WebService时我们经常会考虑以下问题:怎么防止别人访问我的WebService?从哪里引用我的WebService?对于第一个问题,就涉 ...

  3. 在 Azure 上部署 Kubernetes 集群

    在实验.演示的时候,或者是生产过程中,我经常会需要运行一些 Docker 负载.虽然这在本地计算机上十分容易,但是当你要在云端运行的时候就有点困难了.相比于本地运行,在云端运行真的太复杂了.我尝试了几 ...

  4. TeamCity安装

    1 使用docker安装 安装手册:https://hub.docker.com/r/jetbrains/teamcity-server/2 安装包安装. docker run -it --name ...

  5. 【Spring-Controller 整理研究】@RequestMapping略解

    本文以纯后端的角度,去研究Spring Controller在各种情况的行为,及各种属性的作用. 实验准备 利用https://start.spring.io/快速生成一个开箱即用的小巧spring ...

  6. js filter 数组去重

    let arr = [1, 2, 3, 10, 4, 5, 1, 3, 5]; let stateNumArr = arr.filter((item, index, array) => { re ...

  7. k8s基本对象及架构

    一.基本对象 pod pod是最小的部署单元,一个pod由一个或多个容器组成,pod中的容器共享存储和网络,在同一台docker主机上运行. service service是一个应用服务的抽象,定义了 ...

  8. Magento 2.2.5和2.2.6的bug 产品设置special price又删除后价格排序有误

    Magento 2.2.5和2.2.6的bug 产品设置special price又删除后价格排序有误 一.问题描述:版本2.2.5和2.2.6均有此问题,为Magento2的系统bug.为产品设置s ...

  9. redis序列化

    private void setSerializer(StringRedisTemplate template) { Jackson2JsonRedisSerializer jackson2JsonR ...

  10. 推荐一个SAM文件或者bam文件中flag含义解释工具

    SAM是Sequence Alignment/Map 的缩写.像bwa等软件序列比对结果都会输出这样的文件.samtools网站上有专门的文档介绍SAM文件.具体地址:http://samtools. ...