android 中this的用法,从小的地方看起
来源:互联网 发布:北京百度快速排名优化 编辑:程序博客网 时间:2024/04/28 15:56
当我们在写大量代码的时候往往忽略了最基本的东西 ,在这里我跟大家分享一下this,super,final的用法
Android 中this主要有三种用法:
1、表示对当前对象的引用
2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分
3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始
例子:
1、表示对当前对象的引用
this指的是当前对象,你在一个类里调用this,就是调用这个类的对象,如果你在一个内部类里调用this,这个this所指的是这个内部类,而程序如果需要的是外部类的对象,就使用使用 类名.this,这是因为内部类可以直接访问外部类的属性和方法
2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分
3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始
Android 中super主要用法:
class Person { 2 public int c; 3 private String name; 4 private int age; 5 protected void setName(String name){ 6 this.name=name; 7 } 8 protected void setAge(int age){ 9 this.age=age;10 }11 protected void print(){12 System.out.println("Name="+name+" Age="+age);13 }14 }15 public class DemoSuper extends Person{16 public void print(){17 System.out.println("DemoSuper:");18 super.print();19 }20 public static void main(String[] args){21 DemoSuper ds=new DemoSuper();22 ds.setName("kevin");23 ds.setAge(22);24 ds.print();25 }26 }
在DemoSuper中,重新定义的print方法覆写了父类的print方法,它首先做一些自己的事情,然后调用父类的那个被覆写了的方法。输出结果说明了这一点:
DemoSuper:
Name=kevin Age=22
这样的使用方法是比较常用的。另外如果父类的成员可以被子类访问,那你可以像使用this一样使用它,用“super.父类中的成员名”的方式,但常常你并不是这样来访问父类中的成员名的。
在构造函数中
构造函数是一种特殊的方法,在对象初始化的时候自动调用。在构造函数中,this和super也有上面说的种种使用方式,并且它还有特殊的地方,请看下面的例子:
1 class Person { 2 public static void prt(String s){ 3 System.out.println(s); 4 } 5 Person() { 6 prt("A Person."); 7 } 8 Person(String name) { 9 prt("A person name is:"+name);10 }11 }12 public class Chinese extends Person{13 Chinese() {14 super(); //调用父类构造函数(1)15 prt("A chinese.");//(4)16 }17 Chinese(String name) {18 super(name);//调用父类具有相同形参的构造函数(2)19 prt("his name is:"+name);20 }21 Chinese(String name,int age) {22 this(name);//调用当前具有相同形参的构造函数(3)23 prt("his age is:"+age);24 }25 public static void main(String[] args) {26 Chinese cn=new Chinese();27 cn=new Chinese("kevin");28 cn=new Chinese("kevin",22);29 }30 }
在这段程序中,super后加参数的是用来调用父类中具有相同形式的构造函数,如1和2处。this后加参数则调用的是当前具有相同参数的构造函数,如3处。当然,在 Chinese的各个重载构造函数中,this和super.prt”(因为它是父类中的方法且可被子类访问因为子类是内部类),它照样可以正确运行。但这样似乎就有点画蛇添足的味道了。
最后,写了这么多,如果你能对“this通常指代当前对象,super通常指代父类”这句话牢记在心,那么本篇便达到了目的.
Android 中static与final主要用法:
static
final
public class TestStaticFinal {
private static final String strStaticFinalVar ="aaa";
private static String strStaticVar = null;
private final String strFinalVar = null;
private static final int intStaticFinalVar = 0;
private static final Integer integerStaticFinalVar =new Integer(8);
private static final ArrayList<String> alStaticFinalVar =new ArrayList<String>();
private void test() {
System.out.println("-------------值处理前----------");
System.out.println("strStaticFinalVar=" + strStaticFinalVar + "");
System.out.println("strStaticVar=" + strStaticVar + "");
System.out.println("strFinalVar=" + strFinalVar + "");
System.out.println("intStaticFinalVar=" + intStaticFinalVar + "");
System.out.println("integerStaticFinalVar=" + integerStaticFinalVar + "");
System.out.println("alStaticFinalVar=" + alStaticFinalVar + "");
//strStaticFinalVar="哈哈哈哈";//错误,final表示终态,不可以改变变量本身.
strStaticVar = "哈哈哈哈"; //正确,static表示类变量,值可以改变.
//strFinalVar="呵呵呵呵"; //错误, final表示终态,在定义的时候就要初值(哪怕给个null),一旦给定后就不可再更改。
//intStaticFinalVar=2; //错误, final表示终态,在定义的时候就要初值(哪怕给个null),一旦给定后就不可再更改。
//integerStaticFinalVar=new Integer(8); //错误, final表示终态,在定义的时候就要初值(哪怕给个null),一旦给定后就不可再更改。
alStaticFinalVar.add("aaa"); //正确,容器变量本身没有变化,但存放内容发生了变化。这个规则是非常常用的,有很多用途。
alStaticFinalVar.add("bbb"); //正确,容器变量本身没有变化,但存放内容发生了变化。这个规则是非常常用的,有很多用途。
System.out.println("-------------值处理后----------");
System.out.println("strStaticFinalVar=" + strStaticFinalVar + "");
System.out.println("strStaticVar=" + strStaticVar + "");
System.out.println("strFinalVar=" + strFinalVar + "");
System.out.println("intStaticFinalVar=" + intStaticFinalVar + "");
System.out.println("integerStaticFinalVar=" + integerStaticFinalVar + "");
System.out.println("alStaticFinalVar=" + alStaticFinalVar + "");
}
public static void main(String args[]) {
new TestStaticFinal().test();
}
}
- android 中this的用法,从小的地方看起
- Android 中this的用法
- typedef的用法中不明白的地方
- java中this的用法
- java中this的用法
- java中this的用法
- java中this的用法
- java中this的用法
- javascript 中this 的用法:
- javascript 中this 的用法
- java中this的用法
- java中this的用法
- java中this的用法
- C#中this的用法
- js 中 this 的用法
- java中this的用法
- Java 中 this 的用法
- js中this的用法
- 如何实现象WORD里面用鼠标选中的字符背景色改变,然后可以复制背景色改变的字符?
- 怎么用ABBYY拆分对页和校正文本方向
- tomcat ssl认证详解
- 如何快速转载CSDN中的博客
- Kafka安装部署
- android 中this的用法,从小的地方看起
- [大数据]大数据框架Hadoop和Spark的异同
- Intellij IDEA tomcat配置
- JAVA 表单防止重复提交方案
- mysql5.7命令行突然消失解决办法
- C#运算符大全_各种运算符号的概述及作用
- Webcollector 判定爬虫结束
- 在表单必填项之前加上提示
- Web全栈笔记之全选反向(新手必备)