我们新建第一个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. VueJs(14)---理解Vuex

    理解Vuex 一.Vuex 是什么? 首先我们来分析一种实际开发中用vue.js的场景,你有n个组件,当你改变一个组件数据的时候需要同时改变其它n个组件的数据,那么我想你可能会对 vue 组件之间的通 ...

  2. mysql 导入 CSV文件命令行 ERROR 13 (HY000): Can't get stat of

    一定要查看好CSV字段结构是否和文件的表结构字段一致 load data local infile 'F:/MySqlData/test1.csv' --CSV文件存放路径 into table st ...

  3. Kubernetes 基于 Metrics Server 与 HPA 的使用

    在 Kubernetes 中可以手动通过 kubectl scale 命令或通过修改 replicas 数量,可以实现 Pod 的扩容或缩容.Kubernetes 中还提供了 HPA(Horizont ...

  4. Kubernetes 服务入口管理 Traefik Ingress Controller

    前面部署了 kubernetes/ingress-nginx 作为 Ingress Controller,使用 Nginx 反向代理与负载,通过 Ingress Controller 不断的跟 Kub ...

  5. Struts2体系介绍

    回顾Struts2,在会用基础上重看的理解. Struts 2框架架构流程 一个请求在Struts 2框架中的处理大概分为以下几个步骤. (1) 客户端提交一个HttpServletRequest请求 ...

  6. 如何正确的在项目中接入微信JS-SDK

    微信JS-SDK的功能 如果你点进来,那么我相信你应该知道微信的JS-SDK可以用来做什么了.微信的官方文档描述如下. 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. ...

  7. 02 Tensorflow Hello World程序

    打开python idle,输入: import tensorflow as tf # 创建常量 hello = tf.constant('Hello,world!') # 创建会话 sess = t ...

  8. Spring-WebSocket 教程

    WebSocket 教程 概述 WebSocket 是什么? WebSocket 是一种网络通信协议.RFC6455 定义了它的通信标准. WebSocket 是 HTML5 开始提供的一种在单个 T ...

  9. Go pprof性能监控

    Go net/http/pprof包提供了一个在WEB项目中使用的性能监控的工具, 使用时只需要引用包: _"net/http/pprof" 然后就可以在浏览器中访问地址: htt ...

  10. kubernetes之收集集群的events,监控集群行为

    一.概述 线上部署的k8s已经扛过了双11的洗礼,期间先是通过对网络和监控的优化顺利度过了双11并且表现良好.先简单介绍一下我们kubernetes的使用方式: 物理机系统:Ubuntu-16.04( ...