博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javaday09面向对象---简单谈
阅读量:4562 次
发布时间:2019-06-08

本文共 3020 字,大约阅读时间需要 10 分钟。

Java day09 面向对象

一:成员变量和局部变量的区别

 

局部变量是没有默认值的。

还有一个是:

4,内存的位置不同。

 

5,生命周期不同:

 

 

 

 

 

 

 

 

二:内存图(形参为引用类型时)

 

 

 

继续执行:

调用function,压栈执行:

 

 

 

 以前说的是数组是引用类型,

现在要说的是类,它也是引用类型

 

 

三:封装

 

private修饰符:

它属于成员修饰符,它只能修饰成员变量,不能修饰局部变量。

第一个文件:

Person.java

package cn.zcb.demo;public class Person {
private String name;private int age;public void set_Name_Age(String myName,int myAge){
name = myName;if(myAge <0 || myAge>200){ //对外界传来的值进行限制myAge = 20;}else{
age = myAge;} } public String getName(){
return name;} public int getAge(){
return age;} public void speak(){
System.out.println(name +" "+ age);}}第二个文件:Test.javapackage cn.zcb.demo;public class Test{
public static void main(String [] args){
Person person = new Person();person.set("tom",18);System.out.println("Name : "+person.getName() +" Age: "+person.getAge());// System.out.println(person.name); //这时不能访问name 和age ,因为它们被private 修饰了}}

 

一定要写getXXX ,setXXX 方法。

 

this关键字:

 

它的主要的作用是区分成员变量和局部变量的重名的问题。

 

它可以防止,下面的问题:

 

方法要使用成员变量,但是却因为重名而使用了局部变量。

 

package cn.zcb.demo;public class Person {
private String name;private int age;public void set_Name_Age(String myName,int myAge){
this.name = myName;if(myAge <0 || myAge>200){ //对外界传来的值进行限制this.age = 20;}else{
this.age = myAge;} } public String getName(){
return this.name;} public int getAge(){
return this.age;} public void speak(){
System.out.println(this.name +" "+ this.age);}}

 

this内存图:

 

 

 

This 也指向这个内存空间。

 

四:随机点名器案例:

Student

package cn.zcb.demo;public class Student {
private String name;private int age;public void setName_Age(String name,int age){
this.name = name;this.age = age;} public String getName(){
return name;} public int getAge(){
return age;}}

CallName.java

package cn.zcb.demo;import java.util.ArrayList;import java.util.Random;public class CallName {
public static void main(String[] args){
ArrayList
arrayList = new ArrayList
();addStu(arrayList);showStu(arrayList);Student stu = randomStu(arrayList);System.out.println(stu.getName() + " "+stu.getAge());} public static void addStu(ArrayList
arr){
Student s1 = new Student();s1.setName_Age("egon",18);Student s2 = new Student();s2.setName_Age("alex",28);Student s3 = new Student();s3.setName_Age("tom",19);arr.add(s1);arr.add(s2);arr.add(s3);} public static void showStu(ArrayList
arr){
for (int i = 0; i < arr.size(); i++) {
Student s = arr.get(i);System.out.println("Name : " + s.getName() +" "+s.getAge());} } public static Student randomStu(ArrayList
arr){
Random random = new Random();int idx = random.nextInt(arr.size());Student s = arr.get(idx);return s;}}

 

转载于:https://www.cnblogs.com/zach0812/p/11520013.html

你可能感兴趣的文章
汽车之家面试题2016
查看>>
POJ-数据结构-优先队列模板
查看>>
【HAOI2006】旅行(并查集暴力)
查看>>
css实现文本超出部分省略号显示
查看>>
留言板
查看>>
vue-router组件状态刷新消失的问题
查看>>
Android UI开发第十四篇——可以移动的悬浮框
查看>>
java8的一些用法
查看>>
(十)Hive分析窗口函数(二) NTILE,ROW_NUMBER,RANK,DENSE_RANK
查看>>
2018-11-19站立会议内容
查看>>
STM32 通用定时器相关寄存器
查看>>
【题解】1621. 未命名
查看>>
字符串加密算法
查看>>
Oracle的实例恢复解析
查看>>
UICollectionView cellForItemAt 不被调用
查看>>
巧用网盘托管私人Git项目
查看>>
python全栈脱产第19天------常用模块---shelve模块、xml模块、configparser模块、hashlib模块...
查看>>
[LeetCode] House Robber
查看>>
virtualbox中kali虚拟机安装增强功能
查看>>
java生成六位验证码
查看>>