java面向对象的概念6_java学习笔记6(面向对象1:概念,private)

1.思想:

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

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

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

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

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

2.面向对象的好处:

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

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

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

4.万物皆对象。

举例:用类来描述汽车

定义汽车类:

public class Car {//定义一个汽车类

String color;//定义颜色的属性

int count;//定义车轮数的属性

public void run(){//定义跑的方法

System.out.println(color+"的"+count+"轮车在跑");

}

}

运行汽车:

public classTest1 {public static voidmain(String[] args) {

Car c=newCar();

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 classPerson {

String name;intage;public void run(){//定义跑步的方法

System.out.println(age+"岁的"+name+"在跑步");

}

}

建测试类:

public classTest {public static voidmain(String[] args) {

Person p=newPerson();

p.name="小明";

p.age=1000;

p.run();

}

}

运行结果:

af8a5d21ca8300e15f9722f719c62781.png

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

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

public classPerson {privateString name;private intage;publicString getName(){returnname;

}public voidsetName(String name){this.name=name;

}public intgetAge(){returnage;

}public void setAge(intage){if(age>130||age<0){

System.out.println("请输入正确的年龄!!!");this.age=20;

}else{this.age=age;

}

}public voidrun(){

System.out.println(age+"岁的"+name+"在跑步");

}

}

public classTest {public static voidmain(String[] args) {

Person p=newPerson();

p.setName("小明");

p.setAge(30);

p.run();

}

}

运行结果

30434aa6da2f4e8aeb34fbfda3579566.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值