这篇总结断断续续写了2天,内容来自Oracle java8编程入门官方教程和课外搜索总结,希望自己以后返回来看的时候都懂,也希望可以起到帮助初学者的作用.

**转载请注明 **出自 luogg的博客园 ,

因为前不久偶然发现某网站直接复制粘贴我的博客,交谈之后他们修改了出处.

一, Java是一种面向对象的程序设计语言,面向对象的主要特征:

  • 封装 : 隐藏代码的实现细节,将代码模块化 , 利于代码重用, 类作为封装的基本单位,将数据和操作数据的方法封装成一个单位,通过方法来存取数据,达到封装的目的 , 此外 , 封装还可以解决数据存取的权限问题 .

  • 继承 : 继承可以扩展已存在的代码模块, 利于代码重用 , 继承是面向对象重要特征之一 . 任何类都可以从另外一个类中继承 , 这个类拥有它继承的类的所有成员, 被继承的称为父类或基类, 继承父类的称为子类或派生类 , java只支持单继承, 也就是只允许继承一个类, 不允许继承多个类.

  • 多态 : 为了减少代码之间的紧密耦合, 增加应用程序的灵活性 . 多态是指一个类可以具有多种行为, 多态性是指定义具有相同名称的方法或属性的多个类, 但这些类的同名方法或同名属性具有不同的行为. 比如: 车是一个抽象基类,火车类和汽车类, 都是继承车类, 同名属性:都可以移动, 但是行为不同,一个在铁轨一个在马路.

二, 面向对象(Object-Oriented Programming)中一定会遇到两个名词,就是类和对象:

  • 类: 类是从现实事物中抽象出来的,比如具体的每一种动物狗,猫,鱼等都可以看成动物类 , 类是逻辑上的抽象, 描述了对象的行为和方法.
  • 对象: 将抽象的类具体话,就成了对象, 例如狗类可以实例化出来金毛,萨摩等等,这些就是对象, 对象是类的实例.
  • 总结: 类是一个抽象的概念, 是具有相同属性和行为的一组对象的集合,对象则是类的具体实现, 是客观世界中真实存在的事物.

类的代码实现:

```
访问修饰符 class 类名{
属性;( 定义变量 int age;String name等等)
方法; }
```
方法的创建:
访问修饰符 [修饰符] 返回值数据类型 方法名([形式参数]){
方法体(可重复使用的代码);
[return 值;] // 有返回值,返回方法,void 没返回值,
}
//访问修饰符:public、protect、default、private

类的方法:提供某种功能的实现

  1. 实例: public void eat(){}

    public String getName(){}

    public void setName(String n){}
  2. 关于返回值类型: void,表明此方法没有返回值

    有返回值的方法:在方法的最后一定有return + 返回值类型对应的变量.
  3. 方法内可以调用本类的方法或属性, 但是不能在方法内在定义方法.

对象的代码实现:

类类型 对象名 = new 类名();

Person p = new Person();

new的作用是什么?

为对象分配内存,并且使用对象的构造函数初始化对象.

通过对象来调用类中的属性和方法:

对象名.属性 p.name = "张三";

对象名.方法名(); p.sleep([参数]);有形参的话再括号内输入实参.

三, 对象的内存分配

  • 数据类型分为:基本数据类型8个,引用数据类型:数组,类,接口.
  • 类型型属于复合数据类型
  • 栈:对象的引用,局部变量 ; 堆: new出来的东西(包含成员变量)

    Person p = new Person();

    p进入到栈内存中,new出来的Person的属性在堆内存中,并且给各个属性赋予了默认的初始化值, 之后通过p地址值传递给堆中数据.

什么是垃圾回收,它是如何工作的,

垃圾回收是一种回收无用的对象以便重用其内存的机制,在回收对象内存之前调用对象的finalize()方法.

四, 构造函数(方法)

  • 访问修饰符 类名([参数]){

    方法体;}
  • 创建类时,如果没有定义构造方法,系统会自动提供一个无参的构造方法.
  • 构造方法是在创建指定类型的对象时执行的方法,构造方法具有与类相同的名称, 无返回值,无void关键字修饰.
  • 构造方法的定义处不能有任何返回值类型的声明
  • 不能在构造方法中使用return关键字
  • 如果手动的在类里面写了构造方法,不管是有参数的,还是没有参数的,JVM将不再给这个类添加构造方法
  • 通过使用构造方法可以创建类的对象, 也可以在创建对象的同时初始化类的数据成员.

this的作用是什么?

this关键字是对在其上调用方法的对象的引用,它自动传递给方法.

使用形参

形参的声明在方法名后边的圆括号中,形参位于自己方法的作用域中,起着接受实参的重要作用,工作方式与局部变量十分相似.
调用方法时,可以向方法中传递一个或多个值,向方法中传递的值称为 **实参** .

五, 方法重载:

方法重载是指在一个类或接口中可以有多个相同名称的方法, 这些相同的方法具有不同的形参,即形参的个数不同或形参的类型不同.

	public void printInfo(){}
public void printInfo(String s){}
public void printInfo(int a){}
public void printInfo(String s1 , String s2){}

当需要使用这些具有相同名称的方法时,jvm虚拟机会根据实际传递的参数的类型,个数和顺序调用响应的方法.

六, 面向对象思想的落地原则

  • 设计类,并设计类成员(成员变量,成员方法)
  • 通过类,创建对象(类的实例化)
  • 通过"对象.属性"或"对象.方法"来调用,完成相应功能.

七, String与== 的区别

java中的数据类型,可分为两类:

1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean

他们之间的比较,应用双等号(),比较的是他们的值。

2.复合数据类型(类)

当他们用()进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。 JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。

对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号()进行比较的,所以比较后的结果跟双等号()的结果相同。

String s3 = "Monday";
String s4 = "Monday";
if (s3 == s4) {
System.out.println("s3 == s4");
} else {
System.out.println("s3 != s4");
}
输出结果: s3 == s4
public static void main(String[] args) {
String s1 = "Monday";
String s2 = new String("Monday");
if (s1 == s2) {
System.out.println("s1 == s2");
} else {
System.out.println("s1 != s2");
}
if (s1.equals(s2)) {
System.out.println("s1 equals s2");
} else {
System.out.println("s1 not equals s2");
}
} 输出结果:
s1 != s2
s1 equals s2
说明:s1 s2分别引用了两个"Monday"String对象

八, 匿名对象

解释:只在堆内存中开辟空间,在栈内存中没有指向这个堆内存空间的地址(例如:new Person();),一般如果这个对象只是用一次的时候采用

luogg_java学习_05_面向对象(方法和类)的更多相关文章

  1. luogg_java学习_06_面向对象特性之封装和继承

    这篇博客总结了1天,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 , 因为前不久偶然发现某网站直接复制粘贴我的博客,交谈之后他们修改 ...

  2. 0019 Java学习笔记-面向对象-方法

    方法属于谁 方法要么属于类,要么属于对象 static修饰的方法属于类 没有static修饰的方法属于对象 方法只能定义在类里面,不能独立定义 不能独立的执行方法,要么通过类调用,要么通过方法调用 一 ...

  3. 大数据技术之_16_Scala学习_05_面向对象编程-中级

    第七章 面向对象编程-中级7.1 包7.1.1 Java 中的包7.1.2 Scala 中的包7.1.3 Scala 包的特点概述7.1.4 Scala 包的命名7.1.5 Scala 会自动引入的常 ...

  4. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  5. 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类

    static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...

  6. 1.面向过程编程 2.面向对象编程 3.类和对象 4.python 创建类和对象 如何使用对象 5.属性的查找顺序 6.初始化函数 7.绑定方法 与非绑定方法

    1.面向过程编程 面向过程:一种编程思想在编写代码时 要时刻想着过程这个两个字过程指的是什么? 解决问题的步骤 流程,即第一步干什么 第二步干什么,其目的是将一个复杂的问题,拆分为若干的小的问题,按照 ...

  7. ES6学习笔记(一):轻松搞懂面向对象编程、类和对象

    目录 面向过程编程P OP(Process oriented programming) 面向对象编程OOP(Object Oriented Programming) 总结 @ 面向过程编程P OP(P ...

  8. python学习道路(day8note)(抽象类,类的方法,异常处理,socket编程)

    1.#面向对象 #抽象接口 === 抽象类 #就是架构师给你一个架子,你们去写,如果满足不了直接报错 #python2 print("python2---抽象类".center(2 ...

  9. Java之面向对象概述,类,构造方法,static,主方法,对象

    一.面向对象概述 面向过程 "面向过程"(Procedure Oriented)是一种以过程为中心的编程思想.这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响 ...

随机推荐

  1. 招聘.NET开发人员(截止于2015-06-15)

    文章更新 2015-06-15 01:00AM: 感谢各位的支持,简历和解决方案接收截止.2015-06-08 08:30AM: 已经收到一些简历和解决方案,正在筛选中.职位仍然开放,欢迎发送简历及解 ...

  2. quick-cocos2d-x 2.2.3 rc版本中 crypto.md5file() 的C++实现在ANDROID上有BUG

    原来的版本是用fopen打开文件的,如果要从ANDROID的APK中取文件,直接就洗白了修改如下 void CCCrypto::MD5File(const char* path, unsigned c ...

  3. spring-boot 和 docker 集成

    描述 java 的 Spring是一个很火的框架,Spring boot 这个也不用说了,Docker 近年也很火热, 本文就介绍下我在 Spring boot + Docker的集成一些经验 :) ...

  4. TODO:小程序集成WeUI

    TODO:小程序集成WeUI WeUI 为微信 Web 服务量身设计.WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信 Web 开发量身设计,可以令用户的使用感知更加统一. ...

  5. 《FaceBook效应》——读后总结

    这本书讲述了facebook从如何创建.到风靡全球,并结合facebook的网络效应讲述为什么facebook可以做到社交龙头.读这本书的时候,也可以看看<社交网络>这部电影. faceb ...

  6. 浅谈JavaScript的New关键字

    原型和闭包算是JavaScript中最常见,最难以理解,最容易被当做问题的两个部分,当然还有它们的延伸,如作用域链,继承等等吧,我最近也是各种看,各种翻,记录点自己的心得,写写总会让自己的理解更深一些 ...

  7. OleDB Destination 用法

    第一部分:简介 OleDB Destination component 是将数据流load 到destination,共有5种Data Access Mode,一般的Destination compo ...

  8. 【解决】Word 在试图打开文件时遇到错误 请尝试下列方法:* xxx * xxx * xxx

    有好几种情况,我先说我的这个情况 1.word设置不当导致 看图: 然后就能打开了~ 2.word格式问题,比如原来是doc,被人手动改成docx~~~ 解决方法:改回来 3.word版本不兼容,比如 ...

  9. 【Win10应用开发】相对布局(RelativePanel)

    外面的雨下得很大,老周就决定雨下漫笔了. 今天咱们说一个新控件——RelativePanel.本质上,它就是一个面板,面板干啥用的?面板就是一个容器,里面可以放其他对象,就像我们小时候玩的七巧板一样, ...

  10. gcc

    gcc编译源文件一步到位的命令就是 $ gcc demo.c -o demo 实际上这一步包含了四步: 1.预处理 $ gcc -E demo.c demo.i 预处理功能主要包括宏定义,文件包含,条 ...