一下内容是自己总结用的,只是按照自己的理解去写。参考的是菜鸟教程。
Java 是一个面向对象的语言。
OOP就是面向对象编程。
封装:在某些类里面,某些属性不想向外暴露,但是我们又想提供一个方法去访问或修改它,怎么办?
封装此刻就是解决这个问题:
如有一个Student类

public class Student{
//构造函数,可以写可以不写,不写就默认用Java提供的默认构造函数

private int number;

private String name;

public void setNumber(int number){
this.number = number;
}

public int getNumber(){
return this.number;
}

public void setName(String name){
this.number = number;
}

public int getName(){
return this.name;
}
}

此刻,Student类的俩个属性是private(私有)的,我们不能直接用:
Student stu = new Student();
stu.number = 4;
stu.name = "test";

但是方法是public(公共)的,我们可以通过调用这些方法去写入或获得这俩个私有属性:
Student stu = new Student();
stu.setNumber(4);
stu.getNumber;
stu.setName("test");
stu.getName;

这就是对类的封装,封装有什么好处?

1. 良好的封装能够减少耦合。

2. 类内部的结构可以自由修改。

3. 可以对成员变量进行更精确的控制:
类的成员变量可以成为只读或者只写的。
例如访问器getXxxx();修改器setXxxx(); 通过这些可以控制读写权限

4. 隐藏信息,实现细节:
比如这是一个类中得到生日的方法
public String getBirthday(){
return year + "-" + month + "-" + day;
}

public void setBirthday(String birthday){
//拆分字符串,分别取出年月日,给year、month、day进行赋值
}

而在外部调用这个方法的时候
this.getBirthday();
this.setBirthday("1990-9-9");

此时就体现出外部是不知道如何储存birthday这个方法的,用户只能调用它。

继承
Java里,可以让一个子类去extend(继承)一个父类,并且一个子类只能继承一个父类,
子类会继承父类的所有方法。
而在这些方法中,只要不该方法名称 和其参数类型和数量,只对方法里面的代码进行重写,则叫重写,
如果这些方法中,名称不变,但是参数类型有变,或者参数数量有变,又或者俩者都有变,则叫重载。
重写和重载是多态的一部分。

当然有可能父类是个抽喜类,子类继承抽象类则要对父类里的抽象方法加上具体的代码,如果没有则子类中的这个方法也要声明为抽象方法,子类则声明为抽象类,默认public。
由子子类去继承实现抽象方法(你也可以继续上面的情况)。

多态
一个工具,不同的使用就产生不同的结果或行为。
多用于接口?
其中重写和重载是多态的重要部分。
重写要有继承,并且发生在俩个类之间(父子类)
重载发生在一个类之间。

Java oop(一些自己的理解,并没有展开很细)的更多相关文章

  1. java oop详解

    近日来重温了一下java oop的知识.加深了对面向对象的理解.尤其时继承方面.故写一篇博客.记录一下自己的想法和心得 1.面向对象主要分为三大点(封装,继承,多态) 封装的思想促进了类的形成.相比于 ...

  2. 一篇文章带你了解Java OOP思想

    Java OOP 思想深度刨析 Java面向对象编程 面向对象编程简称OOP(Object--对象.Oriendted--导向的.Programming--程序设计) 面向对象通俗来讲,就是指使用丰富 ...

  3. 【转】关于Java的Daemon线程的理解

    原文地址:http://www.cnblogs.com/ChrisWang/archive/2009/11/28/1612815.html 关于Java的Daemon线程的理解 网上对Java的Dae ...

  4. 深入浅出OOP(六): 理解C#的Enums

    MSDN定义:枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一种有效的方法.  例如,假设您必须定义一个变量,该变量的值表示一周中的一天. 该变量只能存储七个有意义的值. 若要定义这 ...

  5. Java内存管理的进一步理解-模拟过程图解

    Java内存管理的进一步理解-模拟过程图解--转载 java的内存管理分为: 1.堆内存:2.栈内存:3.方法区:4.本地方法区 /* 1:方法区      方法区存放装载的类数据信息包括:      ...

  6. java 重写你可以这么理解 因为 方法名和参数类型个数相同 所以这就是重写了 然后 因为是重写 所以 返回值必须相同

    java  重写你可以这么理解    因为   方法名和参数类型个数相同  所以这就是重写了    然后  因为是重写  所以  返回值必须相同

  7. Java中线程同步的理解 - 其实应该叫做Java线程排队

    Java中线程同步的理解 我们可以在计算机上运行各种计算机软件程序.每一个运行的程序可能包括多个独立运行的线程(Thread). 线程(Thread)是一份独立运行的程序,有自己专用的运行栈.线程有可 ...

  8. Java ClassLoader加载机制理解 实际例子

    针对 Java ClassLoader加载机制理解, 做了个如何自定制简单的ClassLoader,并成功加载指定的类. 不废话,直接上代码. package com.chq.study.cl; im ...

  9. Java ClassLoader加载机制理解

    今天看到了一篇介绍Java ClassLoader加载机器的文章, 才发觉一直来自己的肤浅, 好好地给补了一课, 不得不存档! 原文地址: http://www.blogjava.net/lhulcn ...

随机推荐

  1. 详解Python的装饰器

    Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都在那里. 为什么需要装饰器 我们假设你的程序实现了say_hello()和say_goodbye()两个函数. def sa ...

  2. Dingo 的安装

    安装Dingo需要下面的环境: Laravel 5.1 或 lumen 5.1 + php 5.59+ 1. 修改composer.json 文件,添加下面的代码: "require&quo ...

  3. pycharm安装配置

    激活 教程https://blog.csdn.net/u014044812/article/details/78727496 推荐修改host文件的方法 配置 https://blog.csdn.ne ...

  4. python---- pyqt 十字光标

    # encoding: UTF-8 import sys,os import pyqtgraph as pg import datetime as dt import numpy as np impo ...

  5. CF数据结构练习(二)

    1. 833D Red-Black Cobweb 大意: 给定树, 边为黑色或白色, 求所有黑白边比例在$[\frac{1}{2},2]$内的路径边权乘积的乘积. 考虑点分治, 记黑边数为$a$, 白 ...

  6. LVM方式安装Ubuntu 系统

    重装Ubuntu系统,使用LVM管理磁盘,最好不要使用默认的LVM安装方式,而应挂载U盘启动盘,进行物理磁盘分区,创建物理卷.卷组.虚卷(即创建LVM系列操作),在安装系统时将虚卷挂载到文件目录上.将 ...

  7. node.js 生成二维码

    因为自己的项目中,想在商品详情页上 显示一个 商品优惠券的二维码. 以此为需求. node.js 后台代码 const qr_image = require("qr-image") ...

  8. 为二级域名注册ssl证书,并强制使用https对http进行跳转

    服务器上仍然使用nginx进行代理 1.为二级域名申请ssl证书,如blog.yourdomain.com,见前文. 2.在域名解析服务中,为二级域名添加解析记录 3.nginx默认读取/etc/ng ...

  9. 采用梯度下降优化器(Gradient Descent optimizer)结合禁忌搜索(Tabu Search)求解矩阵的全部特征值和特征向量

    [前言] 对于矩阵(Matrix)的特征值(Eigens)求解,采用数值分析(Number Analysis)的方法有一些,我熟知的是针对实对称矩阵(Real Symmetric Matrix)的特征 ...

  10. [la P4487] Exclusive-OR

    [la P4487] Exclusive-OR Time limit 3000 ms  OS Linux You are not given n non-negative integers X0, X ...