面向对象概述

符合人类思维习惯的编程思想 , 生活中存在着不同形态的事物 , 这些事物存在着不同的联系 , 在程序中使用对象来映射现实中事物 , 使用对象关系来描述事物之间的联系, 这种思想就是面向对象.

面向对象过程

分析解决问题所需要的步骤, 使用函数把步骤实现, 再依次调用就可以了. 例如,我要洗衣服,把衣服放在洗衣机,由它代我洗衣服,洗衣机执行功能

类与对象 ->封装

  • 类的定义
  • 对象创建与使用
class Exampel1{
public static void main (String[] args){
Person p1 = new Person();//创建第一个person对象
Person p2 = new Person();//创建第二个person对象
P1.age = 18;//赋值
P1.speak();//调用对象的方法
P2.speak();
}
}
  • 如果没有赋值 , Java会自动赋予初始值
  • 类的设计
public class Student{   //设计一个学生类

        String name ;  // 定义学生姓名属性
int age ; //定义学生年龄属性 public void introduce() {
//方法中打印属性name和age的值
System.out.println("大家好, 我叫"+name +"我今年" +age +
"岁了");
} }

类的封装

将类的属性私有化, 使用 private 关键字来修饰, 不允许外界随意访问

setter  : 给成员变量设置属性值,起到一定的保护作用

getter : 从成员变量中获取属性值

构造方法

  • 定义
  • 方法名与类名相同
  • 在方法名的前面没有返回值类型的声明
  • 在方法中不能使用return语句返回一个值, 但是可以单独写return语句作为方法的结束
class Person{
int age ;
// 定义有参的构造方法
public Person (int a ){
age = a ; // 为age 属性赋值
}
public void speak (){
System.out.println("今年我已经" + age + "碎了");
}
} Public class Test{
public static void main(Strings [] age ){
Person p1 = new Person( 20 ); //实例化Person的对象
p1.speak();
}
}

构造方法的重载

在一个类中可以定义多个构造方法,只要每个构造方法的参数类型或参数个数不同即可

this关键字

  1. 访问本类中的成员变量
  2. this和super是区分子类与父类重名的部分

super关键字

  1. 获取父类中的内容
  2. 必须写在第一行, 调用父类中的构造方法
  3. 如果父类的构造是无参数, 可以不写, 如果父类没有无参数的构造,必须写super

static关键字

  1. 数据共享
  2. 使用类名 . 变量名去访问  /  使用实例化对象的方式去访问
  3. 优于对象产生
  4. 在静态方法不能使用this
  5. 使用类名 . 方法名去调用静态方法

final关键字

  1. 被final修饰的变量不可以改变 , 最终的变量又称为常量
  2. 类不可以继承
  3. 不可以重写
  4. 换句话说就是不可以变

包和导包

  1. 包 : 其实本质就是文件夹
  2. 在代码中需要写package 包名
  3. 导包 : import 包 + 类
  4. 不需要导包 :
  5. 自己包里
  6. java.lang包下的都不需要导包

访问权限

  1. public : 公共的 , 所有人都可以访问
  2. private : 私有的
  3. default : 包访问权限 , 在自己的包内可以随意访问

继承

  1. 使用extends关键字
  2. 子类可以自动拥有父类私有内容外的所有内容

重写

  1. 子类对父类提供的方法进行重新定义
  2. 子类中的方法必须和父类中的方法完全一致
  3. 父类中有多少方法,子类必须重写父类的方法

多态

  1. 同一个对象拥有多种形态
  2. 作用  :  把不同的数据类型进行统一
  3. 对象类型转换
  4. 向上转型 : 把子类对象赋值给父类的引用 (变量)
  5. 但是会屏蔽掉子类中特有的方法

实现

  • implements

抽象

  1. java允许在定义方法时不写方法体
  2. 抽象方法没有方法体
  3. 抽象方法必须使用abstract关键字修饰
  4. abstract修饰方法就是抽象方法 , 同时类也变成抽象类(加上abstract)
  5. 但是抽象类中可以不包含任何抽象方法

特点

  1. 不可以创建对象
  2. 子类继承(extends) 父类后 , 抽象的子类,必须重写父类中的抽象方法 , 才能不变成抽象子类
  3. 抽象类中也可以有正常方法
  4. 作用 : 可以强制要求子类要求的方法 , 使代码更加规范

接口

  1. 特殊抽象类
  2. 所有的方法都是抽象方法 , 可以省略abstract
  3. 用interface关键字声明 , 所有的内容都是公共的, 全局静态 , 常量
  4. 定义的全局常量默认修饰为public static final
  5. 定义的抽象方法默认修饰为public abstract
  6. 接口和类只能是实现  ( implements ) 关系 (上面的抽象和类是继承extends关系)
  7. 类只能单继承 , 接口支持多实现
  8. 类可以继承一个类 , 实现多接口
  9. 接口一样具有多态性 , 整合不相关内容

object

  1. 所有类的根
  2. 默认继承object
  3. 万事万物皆为对象

equals和==

  • equals : 默认调用的是object提供的equals方法 , 判断两个对象内容是否相等
  • == : 判断两个对象内存地址是否一致 , 一般用在基本数据类型上

toString 

  • 默认包+类 @ 地址 , 对一个对象的字符串表示形式
  • instanceof : 判断xxx对象是否是xxx类型的

参数传递问题

内存简单分析

JAVA新手一枚 , 大佬勿喷, 以上的内容是学习过程中的笔记, 权当记录复习 , 具体还是要看Java的基础案例来理解      

[JAVA] 面向对象小小总结的更多相关文章

  1. Java面向对象之继承(一)

    目录 Java面向对象之继承 引言 继承的特点 语法格式 父子类的关系 继承要点 重写父类方法 继承中的构造器 继承中的super关键字 ... Java面向对象之继承 继承是面向对象的第二大特征,是 ...

  2. JAVA面向对象

    JAVA面向对象 对象   我们生活中能看到能摸到的一切事物都是对象.在程序中模拟出生活中的所有东西万物皆对象   只要是对象--属性和行为(方法)   属性   对象有什么   例如:学生有姓名.学 ...

  3. 理解JAVA - 面向对象(object) - 属性,方法

    理解JAVA - 面向对象(object) - 属性,方法 多态的体现:    向上造型,父类接收子类对象:向上造型:    从父类角度看不到子类独有的方法:面向对象,人类认知世界的方式:生活中每天都 ...

  4. Java面向对象㈠ -- 封装

    Java的面向对象有三大特征:封装.继承.多态.这里主要对封装进行讲解. 封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数. Java的封装主要通过访问权限控制符:priva ...

  5. 谈谈Java面向对象的三大特性

    Java面向对象的三大特性就是指封装.继承.多态了. 一.封装: 概念:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. (举例:笔记本电脑就是一个封装体,Java语言中最小的封装体就是函数 ...

  6. Java面向对象:接口

    Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...

  7. 实验二 Java面向对象程序设计

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

  8. java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final

    一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...

  9. 20145212《Java程序设计》实验报告二 《 Java面向对象程序设计》

    20145212 实验二< Java面向对象程序设计> 实验内容 单元测试 三种代码 伪代码 百分制转五分制: 如果成绩小于60,转成"不及格" 如果成绩在60与70之 ...

随机推荐

  1. LintCode 433. 岛屿的个数(Number of Islands)

    LintCode 433. 岛屿的个数(Number of Islands) 代码: class Solution: """ @param grid: a boolean ...

  2. HTML兼容问题及解决办法

    标准浏览器子元素不会撑开父元素设置好的宽度,IE6下会的: <style> .box{ width:400px;} .left{ width:200px;height:300px;back ...

  3. 通过open上网并设置开机自启与自动连接

    注意:这里所说的上网并不是FQ.只是简单的通过iptables让客户端可以访问外网.因为有些时候有这样的需求 上一篇文章为大家介绍了OpenVPN.以及它的部署工作.而这一篇主要就是讲解如何让客户端可 ...

  4. 《Python编程:从入门到实践》分享下载

    书籍信息 书名:<Python编程:从入门到实践> 原作名:Python Crash Course 作者: [美] 埃里克·马瑟斯 豆瓣评分:9.1分(2534人评价) 内容简介 本书是一 ...

  5. 本地开发环境伪装成SSL连接的实现

    本地ssl开发测试实现1,在外网服务器上使用测试域名和t.test.cn,用let's encrypt申请 证书并正常运行2,修改本地服务器host文件,将t.kennylee.vip指向127.0. ...

  6. 数据算法 --hadoop/spark数据处理技巧 --(7.共同好友 8. 使用MR实现推荐引擎)

    七,共同好友. 在所有用户对中找出“共同好友”. eg: a    b,c,d,g b    a,c,d,e map()->  <a,b>,<b,c,d,g> ;< ...

  7. Mysql 在线新建或重做主从

    1. 前言 以前给 Mysql 数据库做主从,都是在主服务器停服的情况下做的.但是最近有一个项目,已经上线几天了,数据库也单服务器跑了几天,才确定要给 Mysql 服务器做一个主从架构,简单的一主一从 ...

  8. 学习shiro最佳实践,绝对正确

    按照https://blog.csdn.net/qq_34021712/column/info/26947学习,基本能解决shiro一切问题,谢谢该博主

  9. 写ppt的助手

    代码格式化工具. https://carbon.now.sh/?bg=rgba(74%2C144%2C226%2C1)&t=material&wt=none&l=auto&am ...

  10. h5笔记1

    1.HTML中不支持 空格.回车.制表符,它们都会被解析成一个空白字符 2.适用于大多数 HTML 元素的属性: class 为html元素定义一个或多个类名(classname)(类名从样式文件引入 ...