CoreJava学习第五课 --- 进入第二阶段:面向对象编程思想

面向对象编程思想

1.面向过程

​ 从计算机执行角度出发 ,代码执行过程核心为从程序的运行过程出发,构建编程思路,例: 哥德巴赫猜想

// 面向过程1 用户输入一个数n2 验证数字的正确性2.1 正确就继续向下2.2 错误就重复输入3 拆数    循环 n=a+b4.判断 a和b同为质数 则打印

2.1对象

计算机中的需求来自现实世界,现实世界是由对象组成。 

对象:万物皆对象!


对象有属性和方法:

  a.属性: 对象有什么b.方法: 对象能做什么

2.2 对象间的关系:

    1. 继承关系    is    a      (一般--特殊  从属关系)例:宝马汽车是汽车2.  关联关系    has   a     (对象的属性又可以是另一个对象)例:汽车有发动机3.  依赖关系    use   a     (一个对象调用另外一个对象的方法)例:司机和汽车

3.面向对象思想

先找到解决问题所需要的对象,再建立对象间的关系, 以及利用对象所形成的过程.

4.计算机如何处理现实中的对象

计算机中的对象: 在计算机中,用一块特定的存储空间表示生活中的对象 
计算机中的对象之间可以形成生活中对象之间的关系 (继承 关联 依赖)

5.类的概念

​ 类是数据类型,对象是数据

类: 对象共性的抽象, 是人对对象的认识, 是对象的模板

6.类的属性(成员变量)【重点】

​ 属性: 是成员变量

1.有默认值  数字类型默认值为0 ,boolean类型为false ,字符串类型为null
2.作用范围: 全类内部
3.成员变量可以和局部变量同名,同名时局部变量优先

成员变量和局部变量在内存中不一样?

7.类的方法

​java中没有函数的概念,函数是面向过程开发中的东西,在java中只有方法的概念。声明(5个部分组成): 修饰符(顺序无关紧要) 返回值类型 方法名 (形式参数表) 抛出的异常--->声明代表对象具有什么功能  实现: {}  代表对象怎么做

8.方法重载【重要】

方法重载 : 让对象方法由于参数表的不同所造成的差异,对用户屏蔽由编译器根据实参来匹配相应的方法 (编译时多态)方法重载:  方法名相同,参数表不同. 对返回值不做要求
参数表不同: 参数个数不同,参数类型不同,参数类型排列不同    (如果只有形参名不同,不算重载)

9.构造方法

​ 注:如果一个类中没有定义任何构造方法,则系统提供默认公开无参构造方法

构造方法: 特殊的方法
构造方法特点:
1.没有返回值类型  区分构造方法和普通方法的唯一标志
2.方法名必须和类名相同
3.不允许直接调用, 在对象构造的过程中自动调用一次对象构造的三个步骤:(没有继承的情况)​
1. 分配空间       属性被赋予默认值  ----> 根据对象的属性分配空间,不同对象所占的空间大小不同。
2. 初始化属性     属性被赋予初始值
3. 调用构造方法   属性通常被再次赋值
class Student{//1. 分配空间  属性被赋予默认值:name被赋值为null,age被赋值为0,score被赋值为0.0String name;int age = 10;//2. 初始化属性  属性被赋予初始值:age被赋值为10double score;public Student(){age = 20;//3. 调用构造方法   属性通常被再次赋值}public Student(String n , int a , double s){name = n;age = a;score = s;}
}

10.new 创建对象

​a.创建对象: 类名 引用名 = new 类名(构造参数)
​b.访问对象的属性或调用对象的方法:
​  引用名.属性
​  引用名.方法()
c.引用中存储对象的地址。 null表示空指针, 引用没有指向任何对象

11.Java中变量的数据类型

​      Java中的变量按照数据类型划分,分为两种

        1.基本变量类型 : 存数值

        2.引用类型(除了 8 种基本类型之外) : 存对象的地址

12.方法参数传递

参数传递: 基本类型参数传值, 对象类型参数传地址 (形参和实参指向同一对象)
//基本类型参数传值
public class TestReference{public static void main(String[] args){int a = 10;int b = a; b++;//b的值变成11System.out.println(a); //10changeInt(a);System.out.println(a); //10     }   static void changeInt(int a){a++;//changeInt()方法中的a变成11,但是没有返回给方法调用处,并没把方法返回值赋值给原来的a}
}
//对象类型参数传地址
public class TestReference{public static void main(String[] args){MyClass mc  = new MyClass();MyClass mc2 = mc;//mc是一个引用,这句代码把mc的引用复制给mc2,意思是mc和mc2指向的是同一个对象mc2.value++;System.out.println(mc.value); //21MyClass mc = new MyClass();/*首先,在主方法中,调用了 changeValue()方法,并且把 mc 作为实参,传递给形参 mc。要注意的是,由于 mc 是一个引用,保存的是一个对象的地址,因此进行传递时,传递给 mc的值就是一个对象的地址。这样,实参 mc 引用和形参 mc 引用中保存的内存地址相同,也就是说,这两个引用指向同一个对象。   */changeValue(mc);System.out.println(mc.value); //21}   static void changeValue(MyClass mc){mc.value++;}
}
class MyClass{int value = 20;
}

13.this关键字

作用:

  1. 引用 表示当前对象, 在类中访问自己的属性和方法时,如果不加引用,引用默认为 this.用this可以区分成员变量和局部变量

    class Student{String name;int age;public Student() { }public Student(String name, int age) {this.name = name;this.age = age;}
    }

     

  2. this(...) 用在构造方法中, 调用本类其他的构造方法 用于构造方法之间相互调用 必须是构造方法的第一条语句

class MyClass{int value;public MyClass(){this(10);System.out.println("MyClass()");}public MyClass(int value){this(); //对 this()的调用必须是构造方法的第一个语句this.value = value; //对 this.的调用位置没有限制}
}   

 

转载于:https://www.cnblogs.com/chenpeisong/p/9775219.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484969.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

波士顿动力的仓库机器人Strentch来了,挑战每小时搬运800个箱子

来源: 雷锋网作者:杨丽编译:TheVerge雷锋网讯,波士顿动力以其机器狗Spot和双足人形机器人Atlas而闻名。不过近年来,该公司开始将目光投放到物流领域,并于日前发布了一款名为Strentch的新型仓库物流机器人。…

Leetcode--1371. 每个元音包含偶数次的最长子字符串(Java)

给你一个字符串 s ,请你返回满足以下条件的最长子字符串的长度:每个元音字母,即 a,e,i,o,u ,在子字符串中都恰好出现了偶数次。 示例 1: 输入:s "elee…

下一代人工智能

来源:人机与认知实验室翻译:朱浩然摘要:人工智能和机器学习的最新研究在很大程度上强调了通用学习和越来越大的训练集以及越来越多的计算。相反,我提出了一种以认知模型为中心的混合,知识驱动,基于推理的方…

Leetcode--5. 最长回文子串(java)

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd" 输出: "bb"…

图论-第k短路

A* 做法 \(f(p)g(p)h(p)\) , \(f(p)\) 作为优先队列比较函数用来比较的值, \(g(p)\) 是当前路径到 \(p\) 的距离, \(h(p)\) 是 \(p\) 点到终点最短路(预处理可以得到)。 每个点出队次数 \(k\),就说明当前找…

Arm十年最大更新:V9架构正式发布

来源:由半导体行业观察(ID:icbank)编译:「anandtech」自Arm在2011年10月首次发布Armv8架构以来,已经过去了近十年的时间。这对Arm来说是一个相当可观的十年,因为在这段时间内,他们的指令集架构受…

输出错误信息

在error页面加以下代码&#xff0c;之后检查网页源代码就会出现错误信息 (URL,Exception是后台传过来的参数) <div><div th:utext"<!--" th:remove"tag"></div><div th:utext"Failed Request URL : ${url}" th:remove…

Lodop打印设计界面生成代码带”...(省略)”

Lodop的设计界面中&#xff0c;菜单里的生成代码&#xff0c;如果打印项内容过多&#xff0c;后面会显示”...(省略)”&#xff0c;省略的是打印项的内容值&#xff0c;无论是纯文本还是超文本&#xff0c;都可以用选中打印项-右键-设置属性里找到该打印项的全部值&#xff0c;…

南洋理工大学研发植物“通信”设备,未来可成为环境探测器

来源&#xff1a;MEMS 最新研究成果由新加坡南洋理工大学&#xff08;NTU&#xff09;领导的一个科学家团队开发了一种可以向植物发送电信号和从植物接收电信号的设备&#xff0c;为利用植物的新技术打开了大门。团队的发现于今年1月25日刊登于国际知名科学期刊《自然》属下的…

服务器核心知识

电脑&#xff1a;辅助人脑的工具 现在的人们几乎无时无刻都会碰电脑&#xff01;不管是桌上型电脑(桌机)、笔记型电脑(笔电)、平板电脑、智慧型手机等等&#xff0c;这些东西都算是电脑。虽然接触的这么多&#xff0c;但是&#xff0c;你了解电脑里面的元件有什么吗&#xff1f…

Spring AOP解析

AOP: Aspect Oriented Programming 面向切面编程。 AOP底层实现原理&#xff1a;代理模式 什么是代理模式&#xff1f; 通过代理控制对象的访问,可以详细访问某个对象的方法&#xff0c;在这个方法调用处理&#xff0c;或调用后处理。既(AOP微实现) ,AOP核心技术面向切面编程…

杜克大学和Facebook联手开发更好的光通信

来源&#xff1a;IEEE电气电子工程师Illustration: Duke UniversityA close-up depiction of the new fiber-free optical WiFi antenna. Silver nanocubes are spaced just a few nanometers above a silver base, with fluorescent dyes sandwiched in between. The physical…

Leetcode--287. 寻找重复数(Java)

给定一个包含 n 1 个整数的数组 nums&#xff0c;其数字都在 1 到 n 之间&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。假设只有一个重复的整数&#xff0c;找出这个重复的数。 示例 1: 输入: [1,3,4,2,2] 输出: 2 示例 2: 输入: [3,1,3,4…

优动漫PAINT核心功能介绍

优动漫PAINT是一款功能强大的动漫绘图软件&#xff0c;适用于个人和专业团队创作&#xff0c;分为个人版和EX版。搭载了绘制漫画和插画所需的所有功能——丰富的笔工具、超强的笔压感应和手颤修正功能&#xff0c;可分别满足画师对于插画、漫画和动画创作的针对性需求。 1. 实现…

2020图灵奖颁给“龙书”两位作者!合作数十年,他们让计算机读懂码农代码

来源&#xff1a;大数据文摘作者&#xff1a;Caleb就在昨天&#xff0c;2020年图灵奖公布了获奖名单。哥伦比亚大学计算机科学名誉教授Alfred Vaino Aho和斯坦福大学计算机科学名誉教授Jeffrey David Ullman共享了这一殊荣。根据国际计算机协会&#xff08;ACM&#xff09;报道…

C语言例题4

1.以下程序运行后&#xff0c;输出结果是 9.5 #include<stdio.h> #define PT 5.5 #define S(x) PT*x*x     int main( )     { int a1&#xff0c;b2;     printf(“%4.1f\n”&#xff0c;S(ab))     } PT*ab*ab5.5*12*129.5 2. 下列对字符串的定义中…

volatile关键字解析

volatile&#xff1a; 1.保证可见性 2.禁止重排序 我们先来看看一个问题&#xff0c;关于ii1的问题。 首先&#xff0c;他不是一个原子性的操作&#xff0c;我们通常将不可拆分的操作称为原子操作 而ii1需要先在主存中取得i的值&#xff0c;之后复制到高速缓存之中&#x…

HTML5/CSS3基础

1. HTML 1.1 什么是HTML HTML是用来制作网页的标记语言HTML是Hypertext Markup Language的英文缩写,即超文本标记语言HTML语言是一种标记语言,不需要编译,直接由浏览器执行HTML文件是一个文本文件,包含了一些HTML元素,标签等HTML文件必须使用.html或.htm为文件名后缀HTML是大小…

机器学习泰斗迈克尔 · 乔丹:不是什么都叫AI的

来源&#xff1a;IEEE Spectrum作者&#xff1a;Kathy Pretz编译&#xff1a;机器之心编辑&#xff1a;小舟、张倩「人工智能系统还远远不够先进&#xff0c;无法在涉及推理、运用现实世界知识和社交互动等许多任务中替代人类。」机器学习先驱迈克尔 欧文 乔丹&#xff08;Mi…

synchronized和lock的区别

公平锁。syn是非公平锁&#xff0c;无法保证线程按照申请锁的顺序获得锁&#xff0c;而Lock锁提供了可选参数&#xff0c;可以配置成公平锁&#xff0c;也可以配置成非公平锁。通常来说&#xff0c;非公平锁的效率比公平锁要高。 可中断锁。一个线程使用syn获取锁&#xff0c;除…