我们新建第一个Car类:

package introduction;

public class Car {

    //颜色
private String color;
//生成商
private String make;
//型号
private String model;
//年份
private int year; //车拥有一个加速度的功能
public void run() {
System.out.println("加速度了.....");
}
}

创建第二个类来对car类进行引用和实例化:

package introduction;

public class ClassDemo {

    public static void main(String[] args) {
}
}

一、实例化对象:

package introduction;

public class ClassDemo {

    public static void main(String[] args) {

    //创建car类型的对象时应该有一个car类型的引用来指向car对象
//new是一个创建对象的关键字
Car bmw = new Car();
}
}

二、实例化后调用car类型中的行为(方法),格式为“实例化后的对象名.方法名”:

package introduction;

public class ClassDemo {

    public static void main(String[] args) {

    //创建car类型的对象时应该有一个car类型的引用来指向car对象
//new是一个创建对象的关键字
Car bmw = new Car(); //实例化之后创建对这个对象的引用
bmw.acceleration();
}
}

打印查看实例化后引用是否成功:

成功引用了car类中的方法

三、访问car类中的成员变量

1、由于car类中的 成员变量权限都是都是“私有的”,所以在其它类中,比如新建的第二个类ClassDemo无法直访问,如果强行调用的话,执行程序时会报错

2、如果是权限是公共的则能够直接访问(为了进行演示,我们暂时将生产商的权限由私有的变成公共的):

//生成商
public String make;

在ClassDemo中调用时与调用car类中的方法是一样的:

bmw.make = "法拉利";

3、由于成员变量权限为私有的,但你还是想调用它,那么在其它类调用时只能采取曲线救国的方式,如下:

我们在该类中写一个方法来接收其它类的传值,并且提供公共的外部访问方式,对私有的数据通过方法的方式来进行访问,也就是set、get方法。

首先写一个方法来接收该类中传进来的值(car类),

package introduction;

public class Car {

    //颜色
private String color;
//生成商
public String make;
//型号
private String model;
//年份
private int year; //车拥有一个加速度的功能
public void acceleration() {
System.out.println("加速度了.....");
}
/*
* 为了能够区分下面这段话,这里我们将表示生产商的make定义为make1,setMake中的make
* 定义为make2,此处为了方便其它类调用,所以取名相同。
* 因为需要给make2这个变量赋值,但上面已经定义了make1是一个字符串类型的变量,
* 所以这里同样需要一个字符串类型的变量来进行接收,也取名叫make2,方便给make2赋值,
* 同时也方便调用者进行区分,
* 如果在方法主体中写成make2=make2,那么表示的都是setMake中的参数列表的中make,
* 这个make2是局部变量,make1是成员变量。
* 所以为了区分这两个make,就有了关键字this,
* 使用格式为“this.”,使用了该关键字后就能够区分局部变量和成员变量,
* 在成员变量前面加上this后变为“this.make=make”
*/
public void setMake(String make) {
//哪个对象来调用setMake方法,这个this就给哪个对象里的成员变量赋值
this.make = make;
}
}

然后提供公共访问方式(get)package introduction;public class Car {    //颜色

    private String color;
//生成商
public String make;
//型号
private String model;
//年份
private int year; //车拥有一个加速度的功能
public void acceleration() {
System.out.println("加速度了.....");
}
/*
* 为了能够区分下面这段话,这里我们将表示生产商的make定义为make1,setMake中的make
* 定义为make2,此处为了方便其它类调用,所以取名相同。
* 因为需要给make2这个变量赋值,但上面已经定义了make1是一个字符串类型的变量,
* 所以这里同样需要一个字符串类型的变量来进行接收,也取名叫make2,方便给make2赋值,
* 同时也方便调用者进行区分,
* 如果在方法主体中写成make2=make2,那么表示的都是setMake中的参数列表的中make,
* 这个make2是局部变量,make1是成员变量。
* 所以为了区分这两个make,就有了关键字this,
* 使用格式为“this.”,使用了该关键字后就能够区分局部变量和成员变量,
* 在成员变量前面加上this后变为“this.make=make”
*/
public void setMake(String make) {
//哪个对象来调用setMake方法,这个this就给哪个对象里的成员变量赋值
this.make = make;
}
//因为make是字符串类型,所以返回的make也是字符串类型
  //get的目的是为了返回这个成员变量的值给调用者
   public String getMake() {
return this.make;
}
}

然后我们切换到ClassDemo类中调用set和get方法,查看访问私有权限的make变量是否成功:

package introduction;

public class ClassDemo {

    public static void main(String[] args) {
//1、实例化car
Car bmw = new Car();
//2、调用set方法,对make变量进行赋值,赋值为“bmw”
bmw.setMake("bmw");
//3、调用get方法,打印返回的值,查看调用访问是否成功
System.out.println(bmw.getMake());
} }

运行结果为:

在用eclipse工具编写java程序时,如果要使用到set和get方法,eclipse中能够自动创建get和set方法:

工具栏source--->Generate Getters and Setters...--->然后把私有成员都勾选上(已经写完get和set的私有变量不会出现在这里)--->Insertion point选项选择:After 'getMake()'--->Sort by选项选择:Fields in getter/setter pairs(表示get和set方法成对出现)--->点击ok--->查看自动创建set和get方法是否成功。

package introduction;

public class Car {

    //颜色
private String color;
//生成商
public String make;
//型号
private String model;
//年份
private int year; //车拥有一个加速度的功能
public void acceleration() {
System.out.println("加速度了.....");
}
/*
* 为了能够区分下面这段话,这里我们将表示生产商的make定义为make1,setMake中的make
* 定义为make2,此处为了方便其它类调用,所以取名相同。
* 因为需要给make2这个变量赋值,但上面已经定义了make1是一个字符串类型的变量,
* 所以这里同样需要一个字符串类型的变量来进行接收,也取名叫make2,方便给make2赋值,
* 同时也方便调用者进行区分,
* 如果在方法主体中写成make2=make2,那么表示的都是setMake中的参数列表的中make,
* 这个make2是局部变量,make1是成员变量。
* 所以为了区分这两个make,就有了关键字this,
* 使用格式为“this.”,使用了该关键字后就能够区分局部变量和成员变量,
* 在成员变量前面加上this后变为“this.make=make”
*/
public void setMake(String make) {
//哪个对象来调用setMake方法,这个this就给哪个对象里的成员变量赋值
this.make = make;
}
//因为make是字符串类型,所以返回的make也是字符串类型,
//get的目的是为了返回这个成员变量的值给调用者
public String getMake() {
return this.make;
}
//创建成功
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
}

四、Object是java中所有类的父类。

章节三、5-Getters-Setters和this关键字part01的更多相关文章

  1. 执行Go程序的三种方式及Go语言关键字

    执行 Go 程序的三种方式及 Go 语言关键字 执行 Go 程序的三种方式 一.使用 go run 命令 二.使用 go build 命令 Step1. 对 go 源码源文件执行 go build 命 ...

  2. 章节三、6-Getters-Setters和this关键字part02

    一.如何在一个类中创建另外一个类的对象,然后用这个类的对象的引用来访问这个对象里面的成员,如下: //如何在一个类中创建另外一个类的对象,然后用这个类的对象的引用来访问这个对象里面的成员 Car bm ...

  3. 三、线程同步之Sysnchronized关键字

    线程同步 问题引入 观察一面一段小程序: public class Main { private static int amount = 0; public static void main(Stri ...

  4. JAVA面对对象(三)——Super、static、final关键字

    Super 使用super关键字可以直接调用父类中的构造方法.属性.普通方法 super调用父类构造方法的操作,与this调用构造方法一样,语句必须放在子类构造方法的首行 public class P ...

  5. flask-admin章节三:数据库迁移工具 alembic初步使用

    1. 概述 基于flask框架构建web,一般会使用sqlchemy(在flask中使用sqlchemy可以参考这里)作为数据库引擎. 这样业务的逻辑就可以做到不跟具体的数据库类型相耦合,具体后端业务 ...

  6. 【外文翻译】 为什么我要写 getters 和setters

    原文作者: Shamik Mitra 原文链接:https://dzone.com/articles/why-should-i-write-getters-and-setters 当我开始我的java ...

  7. Android最佳性能实践(三)——高性能编码优化

    在前两篇文章当中,我们主要学习了Android内存方面的相关知识,包括如何合理地使用内存,以及当发生内存泄露时如何定位出问题的原因.那么关于内存的知识就讨论到这里,今天开始我们将学习一些性能编码优化的 ...

  8. [Learn Android Studio 汉化教程]第三章:使用 Android Studio 编程

    [Learn Android Studio 汉化教程]第三章:使用 Android Studio 编程 本章包含如何在 Android Studio 中书写或生成代码. Android Studio ...

  9. SpringMVC4+thymeleaf3的一个简单实例(篇三:页面参数获取)

    本篇将通过示例介绍页面参数是如何传递到后台的.我们继续沿用之前搭好的程序结构,如果你不知道,请参照前两篇.为方便跳转页面,我们在首页以及zoolist.html页面都加上彼此地址的链接:首页: zoo ...

随机推荐

  1. 利用max-height适应多尺寸屏幕的下拉动画

    移动设备的特点之一便是屏幕尺寸多种多样,所以我们在制作针对移动设备的动画时必须不同尺寸屏幕的兼容性.比如我们要制作以下动画:红框2为详细内容,默认收起:红框1处为事件响应热区,点击后展开或收起红框2的 ...

  2. Android--多线程之进程与线程

    前言 对于Android程序中,使用多线程的技术是必不可少的,就拿之前最简单的例子来说明,对于Android4.0+的应用而言,访问网络必须另起线程才可以访问.本片博客介绍Android下进程和线程, ...

  3. DotNetCore深入了解之二HttpContext类

    当KestrelServer启动时,会绑定相应的IP地址,同时在绑定时将加入HttpConnectionMiddleware作为终端连接的中间件. public async Task StartAsy ...

  4. 解释代码((n & (n-1))== 0)的含义

    思路:初步查看很难一眼分析出表达式是什么含义,我们不妨举例分析一下,假设 n = 5,二进制表示为101,那么 n-1 = 4,二进制表示为100, 5 & 4 = 101 & 100 ...

  5. 开源项目filepond的独立自由之路:城市套路深

    微信原文更清晰:https://mp.weixin.qq.com/s/dv39XvvDNlDqvSgrhN2f7A 最近一直在做一个有关独立开发者友链联盟的插件项目,在做到上传头像时,满网络找最好的头 ...

  6. [转]使用jenkins实现持续集成

    本文转自:https://www.cnblogs.com/zishengY/p/7170656.html 一.jenkins 介绍 它是一个自动化的周期性的集成测试过程,从检出代码.编译构建.运行测试 ...

  7. 第一册:lesson ninety-five。

    原文: tickets,please. Two return tickets to London please. What time will the next train leave? At nin ...

  8. Easyui input 取值跟赋值

    var val = $("#id").textbox('getValue')  //取值 $("#id").textbox('setValue','text') ...

  9. .NET CORE 设置cookie以及获取cookie

    使用我这个方式的前提是在mvc中,确认你安装了:Microsoft.AspNetCore.Mvc. 然后在继承了Controller的类型中使用我所说的方法. 直接使用即可,我是封装了方法供我自己使用 ...

  10. SQL语句NOT IN优化之换用NOT EXISTS

    NOT IN查询示例(示例背景描述:根据条件查询Questions表得到的数据基本在PostedData表中不存在,为完全保证查询结果在PostedData表中不存在,使用NOT IN): SET S ...