Java的this、public、static、protected关键字——有C++基础的Java入门(四)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java的this、public、static、protected关键字——有C++基础的Java入门(四),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3557字,纯文字阅读大概需要6分钟。
内容图文
![Java的this、public、static、protected关键字——有C++基础的Java入门(四)](/upload/InfoBanner/zyjiaocheng/849/d2057a5fc2564905ab3de4249be4f3b0.jpg)
目录
一、 this关键字
我觉得this在Java和C++、C#的作用都是差不多的,this比较重要,还是拉出来讲讲。
1、 概念
打印一个对象的时候,输出的是这个对象的地址(JDK提供的一个地址,真正的地址是十六进制的)。
this 只能在类的对象方法中使用。
this 代表当前调用这个this所在方法的对象的自身。
this 可以在方法内区分同名的类的属性和参数名(有this的一定是属性,没有this的一定是方法的参数名)。
2、 实例
public class Demo {
public void work(){
System.out.println("Demo--------"+this);
}
}
class TestDemo{
public static void main(String[] args) {
Demo demo = new Demo();
System.out.println("TestDemo--------"+demo);
demo.work();
}
}
运行结果
通过上面这个例子,不难看出this和demo的地址(每次new的时候都是唯一的)是相同的,说明它们两个用的是同一个对象,谁调用的这个方法,这个打印出来的地址就是谁的。
3、 常见用法
还是举个栗子吧~
public class PersonInfo{
private String name;
/**
*大家都知道下面的测试类要获取
*这里的私有数据,需要set和get。
*下面这种情况就需要区分一下谁是谁的name。
*/
public void setName(String name){
//this后面的name是属性
//这个方法的name是参数
this.name=name;
}
public void getName(String name){
return name;
}
}
class TestPersonInfo{
PersonInfo person = new PersonInfo ();
person.setName("王大锤");
String personName=person.getName();
System.out.println(personName);
}
类内部 | package内 | 子类 | 其他 | |
public | 允许 | 允许 | 允许 | 允许 |
protected | 允许 | 允许 | 允许 | 不允许 |
default | 允许 | 允许 | 不允许 | 不允许 |
private | 允许 | 不允许 | 不允许 | 不允许 |
4、 原理
假设是一个汽车类(Car),这个车有color、name、carNo(车牌号)的属性,有 run() 和 introduce() 的方法。另外有一个测试类(TestCar)来调用汽车类的方法。代码很简单,这里主要详解一下原理。关于堆和栈以及进栈出栈的方式,自行补脑。
运行流程
第一步:java运行到TestCar的时候,把TestCar.class载入到JVM(各就各位,),把main放入方法区压栈。
第二步:加载Car.class到JVM,然后把run() 和 introduce() 加载到方法区,在堆中创建一片空间创建了一个Car对象,在栈中产生一个变量car 指向堆中的对象。然后给 car 对象的三个属性赋值。
第三步:car 的run() 方法进栈,把 car 变量所指向的地址赋值给this关键字,执行方法体。
第四步:run() 方法出栈,run() 中的 this 消失。
第五步:car 变量消失,main 出栈后消失。
第六步:由于Car堆中的对象失去了变量的引用变成了匿名对象,所以也被系统回收。
二、 public关键字
使用对象:类、接口、成员
介绍:无论它所处在的包定义在哪,该类(接口、成员)都是可访问的
三、static关键字
使用对象:类、方法、字段、初始化函数
介绍:成名为static的内部类是一个顶级类,它和包含类的成员是不相关的。
1、修饰在属性上
class User{
//一般的变量命名
String username;
String password;
//加上static的命名
static String realName;
}
加上static关键字之后,表示realName这个变量名不再是User的属性,而是这个类的属性。
2、修饰在方法上
语法:public static 返回值类型 方法名(数据类型 参数名);
方法名上不带static的方法都是对象的方法。
public class Demo {
String name;
int age;
String lesson;
/**
* 对象的方法,每一个老师的实例可以使用
*/
public void teach(){
System.out.println("老师在上课.....");
}
/**
* 类方法
*/
public static void sleep(){
System.out.println("老师在睡觉.....");
}
}
class TestDemo{
public static void main(String[] args) {
// 使用类名来调用类方法,推荐使用
Demo.sleep();
//不推荐使用下面的方法来调用
Demo demo = new Demo();
demo.sleep();
}
}
总结:上面这个实例说明,有static关键字的方法是类的属性,则可通过 “类名.方法名” 来调用。
四、 protected关键字
推荐一个教程链接:http://www.runoob.com/w3cnote/java-protected-keyword-detailed-explanation.html
下一章节:有C++基础的Java入门(五)
内容总结
以上是互联网集市为您收集整理的Java的this、public、static、protected关键字——有C++基础的Java入门(四)全部内容,希望文章能够帮你解决Java的this、public、static、protected关键字——有C++基础的Java入门(四)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。