您现在的位置是:首页 > 文章详情

JAVA学习day09

日期:2019-01-15点击:230

1、面向过程与面向对象的思想
面向对象: 我该让谁来做
面向过程: 我该怎么做

2、大象装冰箱
我们把大象装冰箱为例进行分析。
在针对具体的需求,可以使用名词提炼的办法进行分析,寻找具体的对象。
需求:把大象装冰箱里
对象:大象、冰箱
分三步:
1、打开冰箱门
2、将大象装进去
3、关闭冰箱门
分析发现打开、装、关闭都是冰箱的功能。即冰箱对象具备如下功能:
冰箱打开
冰箱存储
冰箱关闭
用伪代码描述,上述需求中有两个具体的事物 大象 和 冰箱
描述大象:
class 大象
{
}
描述冰箱
class冰箱
{
void 打开(){}
void 存储(大象){}
void 关闭(){}
}
当把具体的事物描述清楚之后,需要使用这些具体的事物,Java使用具体的事物,需要通过new关键字来创建这个事物的具体实例。
使用对象:
1、创建冰箱的对象
冰箱 bx = new 冰箱();
2、调用冰箱的功能
对象.功能();
bx.打开();
bx.存储(new 大象());
bx.关闭();
 总结:
1、先按照名词提炼问题领域中的对象
2、对对象进行描述,其实就是在明确对象中应该具备的属性和功能
3、通过new的方式就可以创建该事物的具体对象
4、通过该对象调用它以后的功能。

3、对象的内存图

方法进栈,类进堆 

4、成员变量和局部变量的差别

成员变量:定义在类中的 局部变量:定义在方法中的变量 区别: 1)定义位置上的区别 成员变量:定义在类中,方法外 局部变量:定义在方法中,语句内 2)作用域不同 成员变量:作用范围是整个类 局部变量:作用范围是方法内,语句内 3)默认值不同 成员变量:有自己的默认值 局部变量:没有默认值,不赋值不能使用 4)内存位置不同 成员变量:跟着对象进入堆内存存储 局部变量:跟着方法进栈内存 5)生命周期不同 成员变量:跟着对象,在堆中存储,内存等待JVM清理 局部变量:跟着方法,方法出栈,生命周期较短 

5、方法参数是基本数据类型 或 引用数据类型

public class Person {
String name ;
}

/*

  • 方法的参数类型,是基本数据类型,引用数据类型
    */

public class TestPerson {

public static void main(String[] args) { int a = 1; function(a); System.out.println(a); Person p = new Person(); p.name = "张三"; System.out.println(p.name); function(p); System.out.println(p.name); } /* * 定义方法,参数类型是引用数据类型 * 参数是Person类型 * p接受的是一个内存的地址 * main 中的变量p * function 中的变量p 保存的地址是一样的 */ public static void function(Person p){ p.name = "李四"; } /* * 定义方法,参数类型是基本数据类型 */ public static void function(int a){ a+=5; }

}

6、封装

将具体功能封装到方法中,学习对象时,也提过将方法封装在类中,其实这些都是封装。 封装,它也是面向对象思想的特征之一。面向对象共有三个特征:封装,继承,多态。接下来我们具体学习封装。  封装表现:  1、方法就是一个最基本封装体。  2、类其实也是一个封装体。  从以上两点得出结论,封装的好处:  1、提高了代码的复用性。  2、隐藏了实现细节,还要对外提供可以访问的方式。便于调用者的使用。这是核心之一,也可以理解为就是封装的概念。  3、提高了安全性。 

7、private关键字

  • 新的关键字 private 私有 属于成员修饰符,不能修饰局部变量
  • 被private修饰的成员,只能在自己的本类中被使用
  1. cn.itcast.demo04;

/*

  • 描述现实生活中的人的事物
  • 属性: 姓名 年龄
  • 功能: 说话
  • 出现安全问题: age问题,可能出现赋值为负数的情况
  • 负数不会导致程序问题,违反生活中的真实情况
  • 提高安全问题: 让外面的类,不允许直接调用我的成员变量
  • 新的关键字 private 私有 属于成员修饰符,不能修饰局部变量
  • 被private修饰的成员,只能在自己的本类中被使用
  • 对私有变量,提供公共的访问方式: 方法
    */

public class Person {

 //人的姓名,成员变量 String name; //人的年龄,成员变量 private int age ; //变量age被私有,提供方法,让外面的类使用 //定义方法,对age变量进行赋值,方法名字,必须set开头 public void setAge(int a){ //对变量参数a进行范围的限制 if(a<0 || a > 200){ //如果a超过范围,手动将age赋值为20 age = 20; }else{ //如果a没有超过范围,直接对age赋值 age = a; } } //定义方法,对变量age获取值使用,方法名字get public int getAge(){ return age; } //定义人的说话功能,方法中,要求说出自己的姓名和年龄 public void speak(){ System.out.println(name+"..."+age); }

}

package cn.itcast.demo04;
/*

  • 定义好的Person类进行测试
  • 创建对象,对象调用属性和方法
    */

public class PersonTest {

public static void main(String[] args) { //创建Person类的对象 new Person p = new Person(); //对成员变量赋值 //p.age = -200; //对成员变量age赋值,只能调用Set方法赋值 p.setAge(50); p.name = "张三"; //调用类中方法 p.speak(); //输出成员变量age值,必须调用get方法 System.out.println(p.getAge()); } 

}

 总结:

 类中不需要对外提供的内容都私有化,包括属性和方法。 以后再描述事物,属性都私有化,并提供setXxx getXxx方法对其进行访问。 

8、私有化Person类带get,set

私有化所有的属性(成员变量),必须有对应的get与set方法 凡是自定义的类,都必须有get与set方法 

package cn.itcast.demo05;

/*

  • 类描述人:
  • 属性: 姓名和年龄
  • 方法: 说话
  • 私有化所有的属性 (成员变量) ,必须写对应的get/set方法
  • 凡是自定义的类,自定义成员变量,应该私有化,提供get/set
  • this关键字:
  • 区分成员变量和局部变量同名情况
  • 方法中,方位成员变量,写this.
    */

public class Person {

private String name; private int age; // set方法,变量name,age赋值 public void setAge(int age) { this.age = age; } public void setName(String name) { this.name = name; } // get方法,变量name,age获取值 public int getAge() { return age; } public String getName() { return name; } public void speak() { String name = "哈哈"; int age = 16; System.out.println("人在说话 " + this.name + "..." + this.age); }

}

public class PersonTest {

public static void main(String[] args) { Person p = new Person(); //调用set方法,对成员变量赋值 p.setAge(18); p.setName("旺财"); p.speak(); //调用get方法,获取成员变量的值

// System.out.println(p.getName());
// System.out.println(p.getAge());

}

}

9、this关键字——用于解决成员变量和局部变量的重名问题
方法中的局部变量和类中的成员变量,采用就近原则进行变量获取
由于存在成员变量和局部变量同名的情况,此时需要this关键字
所有this.的变量都是类中的成员变量

10、知识点总结
 类与对象
 类,用于描述多个对象的共同特征,它是对象的模板。
 对象,用于描述现实中的个体,它是类的实例。
 类的定义:使用关键字class来定义java中的类
 格式:

 class 类名 { //属性 数据类型 变量名; … //方法 修饰符 返回值类型 方法名(参数){ } … }

 创建对象:
 格式:
类名 对象名 = new 类名();
 封装(private关键字)
 封装,把对象的属性与方法的实现细节隐藏,仅对外提供一些公共的访问方式
 封装的体现:
 变量:使用 private 修饰,这就是变量的封装
 方法:也是一种封装,封装了多条代码
 类: 也是一种封装,封装了多个方法
 private关键字,私有的意思
 它可以用来修饰类中的成员(成员变量,成员方法)
 private的特点:
 private修饰的成员只能在当前类中访问,其他类中无法直接访问
 this关键字
 this关键字,本类对象的引用
 this是在方法中使用的,哪个对象调用了该方法,那么,this就代表调用该方法的对象引用
 this什么时候存在的?当创建对象的时候,this存在的
 this的作用:用来区别同名的成员变量与局部变量(this.成员变量)

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

image

原文链接:https://yq.aliyun.com/articles/687212
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章