1.思想:

  面向过程的思想:遇到问题时想,我该如何做,然后分步骤实现;

  面向对象的思想:遇到问题时想,我该派谁去做这件事,至于他怎么做,与我无关,我只要最后的结果。

  

  实际举例:我们要组装一台电脑;

  面向过程:我们要去网上看各种硬件参数性价比,去商城询问价钱,然后挑选出来最合适的,买各种配件自己组装;

  面向对象:找一个懂电脑的专家,然后告诉他我们要一台电脑,他组装好给我。

2.面向对象的好处:

  1.更符合人们的思考习惯;

  2.面向对象更像一个指挥者,而面向过程是执行者;

  3.面向对象的思维方式可以将复杂的问题简单化;

  4.万物皆对象。

  

  举例:用类来描述汽车

  定义汽车类:

public class Car {//定义一个汽车类
String color;//定义颜色的属性
int count;//定义车轮数的属性
public void run(){//定义跑的方法
System.out.println(color+"的"+count+"轮车在跑");
}
}

  运行汽车:

public class Test1 {
public static void main(String[] args) {
Car c=new Car();
c.color="红色";
c.count=3;
c.run();
}
}

  对象的内存分析:

  1.main方法进入栈中运行

  2.创建一个Car类,在堆内存开一片空间,存入这个新建的对象,类的成员变量跟随进入堆中,并赋予默认值(null,0)

  3.这个内存地址传给引用型变量c,即c指向内存中的这个对象

  4.c指向的内存中的变量color,count被修改

  5.方法run由对象c调用,进栈执行

  6.run方法执行完毕,释放栈内存

  7.main方法结束,释放栈内存

  8.c变量消失,堆内存中的对象被清除,释放内存

3.类和对象的关系:

  类:对某一类事物的抽象描述;

  对象:用于表示现实中该事物的个体;

  类与对象的关系:类是对象的模板,对象是类的 实例;

4.成员变量和局部变量的关系

  写在类中的变量是成员变量,写在类中的方法中的变量是局部变量。

  区别:1.作用域:成员变量作用范围是整个类,局部变量作用与方法内或语句内;

     2.默认值:成员变量有默认值(null,0,0.0),局部变量没有默认值,不赋值不能用;

     3.内存位置:成员变量跟随对象进入盏中进行存储,局部变量跟随自己的方法进入盏内;

     4.生命周期:成员变量跟随对象存储在堆内存中等待jvm清理,生命周期相对更长;

             局部变量跟随方法,只要方法出栈,就不存在了,生命周期相对更短。

5.面向对象三大特征: 封装,继承,多态;

  封装的表现:

      方法就是一个封装体,类也是一个封装;

  封装的特点:

      1.提高了代码的复用性;

      2.隐藏了实现细节,还要对外提供可以访问的方式,便于调用者的使用;

      3.提高了安全性。

6.private关键字

  建一个人的类:

public class Person {
String name;
int age;
public void run(){//定义跑步的方法
System.out.println(age+"岁的"+name+"在跑步");
}
}

建测试类:

public class Test {
public static void main(String[] args) {
Person p=new Person();
p.name="小明";
p.age=1000;
p.run();
}
}

运行结果:

在这个运行结果中,岁的小明在跑步;很明显,这个年龄是错误的,为了应对这个问题,我们就想:如果不能修改变量的值,这个问题就能解决;于是就有了private关键字;

被private修饰的成员,只能在本类中使用;可以对私有的成员提供公共的访问方式--方法;

public class Person {
private String name;
private int age;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getAge(){
return age;
}
public void setAge(int age){
if(age>130||age<0){
System.out.println("请输入正确的年龄!!!");
this.age=20;
}else{
this.age=age;
}
}
public void run(){
System.out.println(age+"岁的"+name+"在跑步");
}
}
public class Test {
public static void main(String[] args) {
Person p=new Person();
p.setName("小明");
p.setAge(30);
p.run();
}
}

运行结果

java学习笔记6(面向对象1:概念,private)的更多相关文章

  1. Java学习笔记之---面向对象

    Java学习笔记之---面向对象 (一)封装 (1)封装的优点 良好的封装能够减少耦合. 类内部的结构可以自由修改. 可以对成员变量进行更精确的控制. 隐藏信息,实现细节. (2)实现封装的步骤 1. ...

  2. 【原】Java学习笔记019 - 面向对象

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 仔细想一想,Ani ...

  3. Java学习笔记之面向对象、static关键字

    一周Java学习总结 今天就总结理清一下关于面向对象和面向过程的程序设计的一些不同特点,以及讲下static关键字. 面向对象 现在接触的Java是面向对象的,现在的程序开发几乎都是以面向对象为基础的 ...

  4. Java 学习笔记(4)——面向对象

    现在一般的语言都支持面向对象,而java更是将其做到很过分的地步,java是强制使用面向对象的写法,简单的写一个Hello Word都必须使用面向对象,这也是当初我很反感它的一点,当然现在也是很不喜欢 ...

  5. 疯狂java学习笔记之面向对象(二) - 成员变量与局部变量

    Java变量按其作用域可分为:成员变量和局部变量.注意:在Java中是没有全局变量这个概念的 一.成员变量: 成员变量是在类中定义的变量,具体可分为类变量与实例变量--有无static修饰 实例变量的 ...

  6. 疯狂java学习笔记之面向对象(一) - 定义类、方法、构造器

    Java面向对象 1.定义类 2.创建对象.调用方法 类和对象: 某一类对象的概念定义. 比如:人类 - 抽象出来的概念(不特指某个人) 对象 - 在类的概念下产生的一个实例,它就是一个对象了. ja ...

  7. 【原】Java学习笔记016 - 面向对象

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // this 关键字 ...

  8. Java学习笔记--关于面向对象的思考

    1.不可改变的类生成对象以及变量的范围 2. 关键词this的使用 3.用类抽象的思想制作软件 4.通过关系模型建立类 5.使用面向对象的范例来设计程序,遵循类设计指导. 已经学习了:怎么定义类已经创 ...

  9. Java学习笔记:01面向对象-继承

    01面向对象-继承 一.java中的数据类型 1.基本数据类型:四类 八种 byte(1) boolean(1) short(2) char(2) int(4) float(4) long(8) do ...

随机推荐

  1. implode

    $names = implode('|', array_column($categoryBackNameArr, 'name'));

  2. MVC实战之排球计分(四)—— View设计与实现

    (view)视图 视图是用户看到并与之交互的界面.对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷 ...

  3. 6月17 ThinkPHP连接数据库------数据的修改及删除

    1.数据修改操作 save()  实现数据修改,返回受影响的记录条数 具体有两种方式实现数据修改,与添加类似(数组.AR方式) 1.数组方式 a)         $goods = D(“Goods” ...

  4. 一、ZooKeeper学习

    一.什么是ZooKeeper? ZooKeeper是一个分布式应用的开源协调服务.目的就是给用户提供同步.配置管理.分组和命名等服务.是Java语言编写的,支持Java和C两种语言.通俗的讲,它就是用 ...

  5. 一、集合框架(Collection和Collections的区别)

    一.Collection和Map 是一个接口 Collection是Set,List,Queue,Deque的接口 Set:无序集合,List:链表,Queue:先进先出队列,Deque:双向链表 C ...

  6. Linux/AIX/Windows端口和进程互查

    经常我们需要通过端口号查是哪个进程占用,或想查看某个进程占用了哪些端口. 1.1Linux上通过端口查找进程 比如我们想知道当前系统中80端口是哪个进程所占用 netstat -anp| |more ...

  7. dl简单模板,无pretraining过程

    layer_dimensions = [11 22 33 22 11]'; ld_size = size(layer_dimensions , 1); % what is deal [x rx dx ...

  8. 【HTTP】boundary 中一个 = 导致HTTP上传文件失败

    (1)#define ABOUNDARY "----=_Resume_002_0CE7_01D1C649.298A8070" (2)#define ABOUNDARY " ...

  9. react router @4 和 vue路由 详解(六)vue怎么通过路由传参?

    完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 8.vue怎么通过路由传参? a.通配符传参数 //在定义路由的时候 { path: ' ...

  10. Weka中数据挖掘与机器学习系列之数据格式ARFF和CSV文件格式之间的转换(五)

    不多说,直接上干货! Weka介绍: Weka是一个用Java编写的数据挖掘工具,能够运行在各种平台上.它不仅提供了可以直接用于数据挖掘的软件,还提供了src代码,使用者可以修改源代码,进行二次开发. ...