《java入门第一季》之面向对象this关键字
/*
起名字要做到见名知意。 this:是当前类的对象引用。简单的记,它就代表当前类的一个对象。 注意:谁调用这个方法,在该方法内部的this就代表谁。 this的场景:
解决局部变量隐藏成员变量
*/
//定义学生类
class Student {
//姓名
private String name;
//年龄
private int age; //姓名获取值
public String getName() {
return name;//返回一个String类型的成员变量名称为name的值,其实这个值就是给成员变量赋值后的值
} //姓名设置值
public void setName(String name) { //name = "林青霞";见名知意
//name = name; //变量的使用规则:就近原则
//这里的调用只能通过对象名
//这个对象如果存在,它应该代表的是Student的一个对象。
//那么,谁能够代表当前类的对象呢? java就提供了一个关键字 this。代表当前类的对象
//Student.name = name;//报错信息:无法从静态上下文中引用非静态 变量Studen name= name
this.name = name;//this.name为成员变量
} //年龄获取值
public int getAge() {
return age;
} //年龄赋值
public void setAge(int age) {
this.age = age;//两个age不是同一个age,=右边是局部变量,左边是成员变量。为了避免局部变量隐藏成员变量
}
} //测试类
class StudentTest {
public static void main(String[] args) {
//创建学生对象
Student s = new Student(); //给成员变量赋值
s.setName("林青霞");
s.setAge(27);
//获取数据
System.out.println(s.getName()+"---"+s.getAge());
}
}
/*
标准的代码改进版 this:哪个对象调用那个方法,this就代表那个对象
*/
class Student{
//姓名
private String name;
//年龄
private int age;
//获取姓名方法getXxx();
public String getName(){
return name;
}
//给姓名赋值的方法setXxx();
public void setName(String name){
this.name = name;
}
//获取年龄的方法
public int getAge(){
return age;
}
//给年龄赋值的方法
public void setAge(int age){
this.age = age;
}
} class StudentTest2{
public static void main(String[] args){
//创建第一个对象
Student s1 = new Student();
//给成员变量赋值
s1.setName("杨道龙");//s1调用这个方法,那边的this就代表了对象s1
s1.setAge(24);
//输出
System.out.println(s1.getName()+"---"+s1.getAge());
System.out.println("--------------------------");
//创建第二个对象
Student s2 = new Student();
s2.setName("奥巴马");
s2.setAge(12);//s2调用这个方法,那边的this就代表了对象s2
System.out.println(s2.getName()+"---"+s2.getAge());
}
}
再用一个手机类加深印象:
/*
作业:请把手机类写成一个标准类,然后创建对象测试功能。 手机类:
成员变量:
品牌:String brand;
价格:int price;
颜色:String color;
功能:string function
成员方法:
针对每一个成员变量给出对应的getXxx()/setXxx()方法。
最后定义测试:
创建一个对象,先通过getXxx()方法输出成员变量的值。这一次的结果是:null---0---null
然后通过setXxx()方法给成员变量赋值。再次输出结果。这一次的结果是:三星---2999---土豪金
*/
class Phone{
//品牌
private String brand;
//价格:
private int price;
//颜色:
private String color;
//功能:
private String function; //针对每一个成员变量给出对应的getXxx()/setXxx()方法。
//getBrand方法
public String getBrand(){
return brand;
}
//setBrand方法
public void setBrand(String brand){
this.brand = brand;
}
//getPrice方法
public int getPrice(){
return price;
}
public void setPrice(int price){
this.price = price;
} public String getColor(){
return color;
}
public void setColor(String color){
this.color = color;
}
public String getFunction(){
return function;
}
public void setFunction(String function){
this.function = function;
}
} class PhoneTest{
public static void main(String[] args){
//创建对象
Phone p = new Phone(); //没赋值前输出
System.out.println(p.getBrand()+"--"+p.getPrice()+"--"+p.getColor()+"--"+p.getFunction());
//赋值:
p.setBrand("三星");//p对象调用该方法,该方法中的this就代表该对象
p.setPrice(2999);
p.setColor("土豪金");
p.setFunction("拍照");
System.out.println(p.getBrand()+"--"+p.getPrice()+"--"+p.getColor()+"--"+p.getFunction());
}
}
加入内存图片帮助理解:
《java入门第一季》之面向对象this关键字的更多相关文章
- JAVA入门第一季(mooc-笔记)
笔记相关信息 /** * @subject <学习与创业>作业1 * @author 信管1142班 201411671210 赖俊杰 * @className <JAVA入门第一季 ...
- Java入门第一季——从此投身Java??
找工作告一段落. 最后的工作呢,和java紧密相关,也是阴差阳错,不过都是软件开发,都好了,不过以后侧重点肯定是在java这边,php有机会还是一直学下去的,那么美的说~ Java开发第一季 一.简 ...
- 《java入门第一季》之面向对象(谈谈接口)
软件中有接口,这里的接口与硬件中的接口还是有很大区别的. 这里介绍接口不考虑JDK8的新特性(JDK8开始接口里面可以有非抽象方法了,介绍JDK8新特性可能要到整个第一季写完吧!) 还是直接进入接口的 ...
- Java入门第一季
慕课网:http://www.imooc.com/learn/85 Java入门知识第一季 1.Java开发环境和IDE的使用: 2.变量和常量 3.常用的运算符 4.流程控制语句 5.数组:使用Ar ...
- 《java入门第一季》之Arrays类前传(排序案例以二分查找注意的问题)
根据排序算法,可以解决一些小案例.举例如下: /* * 把字符串中的字符进行排序. * 举例:"dacgebf" * 结果:"abcdefg" * * 分析: ...
- 《java入门第一季》之面向对象(final关键字)
/* final可以修饰类,方法,变量 特点: final(可以修饰类),该(类)(不能被继承).一旦修饰了一个类,这个类就不能被继承了! final以修饰方法,该方法可以被继承但是不能被重写.(覆盖 ...
- 《java入门第一季》之面向对象(static关键字)
/* static的特点:(它可以修饰成员变量,还可以修饰成员方法) A:随着类的加载而加载 回想main方法. B:优先于对象存在 C:被类的所有对象共享 举例:班级的学生应该共用同一个班级编号. ...
- 《java入门第一季》之面向对象(private关键字与封装概念的初探)
/* 定义一个学生类: 成员变量:name,age 成员方法:show()方法 在使用这个案例的过程中,发现了一个问题: 通过对象去给成员变量赋值,可以赋值一些非法的数据.例如:name你赋值了一个3 ...
- 《java入门第一季》之面向对象面试题(fianl关键字)
/* 面试题:final修饰局部变量的问题 基本类型:基本类型的值不能发生改变. 引用类型:引用类型的(地址值)(不能发生改变),但是,该对象的堆内存的值是可以改变的. */ class Studen ...
随机推荐
- Linux测量kernel子模块加载时间的方法
1. 在文件kernel/init/main.c里面,在接口do_one_initcall( )中,将initcall_debug设置为true,然后编译boot.img 2. 使用adb shell ...
- [图论]最大流问题(Maximum flow)的定义
首先定义网络(network)N =(V,E), V表示顶点(Vertices)集合, E表示边(Edges)集合. s,t是V中的两个顶点,分别表示网络N中的源点(source)和汇点(sink). ...
- scheme深拷贝和浅拷贝探索
> (define a '(1 2 3)) > (define b (cons a '())) > b (( )) > (set-car! (car b) ) > b ( ...
- FORM界面批量处理-全选框实现
全选框实现方法多种多样,这里只介绍两种 方法一:触发器式,优点程序简单,缺点颜色单调不突出 1. 在数据块和控制块上分别创建check box 2. 设置check box选中与为 ...
- 详解EBS接口开发之采购订单导入
采购订单常用标准表简介 1.1 常用标准表 如下表中列出了与采购订单导入相关的表和说明: 表名 说明 其他信息 po.po_headers_all 采购订单头 采购订单号,采购类型,供应商,地点, ...
- Java进阶(四十七)Socket通信
Java进阶(四十七)Socket通信 今天讲解一个 Hello Word 级别的 Java Socket 通信的例子.具体通讯过程如下: 先启动Server端,进入一个死循环以便一直监听某端口是 ...
- Django开发自己的博客系统
好久之前就想做一下自己的博客系统了,但是在网上查了查好像是需要会一些Node.js的相关知识,而且还要安装辣么多的库什么的,就不想碰了.但是我遇到了Django这么一款神器,没想到我的博客系统就这么建 ...
- 1.1、Android Studio创建一个项目
Android Studio中的项目包含一个或多个模块.本节帮助你创建一个新的项目. 创建一个新的项目 如果你之前没有打开项目,Android Studio显示欢迎页面,通过点击Start a New ...
- Android简易实战教程--第十三话《短信备份和还原~三》
之前写过短信备份的小案例,哪里仅仅是虚拟了几条短信信息.本篇封装一个业务类,且直接通过内容提供者,访问本系统的短信信息,再提供对外接口.如果想要短信备份和短信还原,直接复制这段代码即可.对于您调用这个 ...
- Cocos2d-x 添加iOS7默认分享/AirDrop
猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=530 下午添加分享的时候,看着这 ...