关键字:
1.哪些关键字
this、super、static、void、访问权限、final、
break 跳出,中断 continue
instanceof
2.this 属性、方法、构造方法
属性:同名的时候,为了区分全局的还是局部
普通方法:基本没用
构造方法:this:一层一层往下调用,最后是最全的方法去实现(必须放在第一行)
2.1属性:
package 关键字;
public class ThisTest {
private String name; //定义一个成员变量name
public void setName(String name) {
//设置姓名,定义一个形参name
name=name;
}
public String getName( ) {
//获得姓名 return "姓名:"+name;
return name;
}
public static void main(String[] args) {
ThisTest thisTest=new ThisTest();
thisTest.setName("张三");;
System.out.println("姓名:"+thisTest.getName());
}
}
运行结果:姓名:null
由运行结果可以看出,通过name=name并没有正确的将内容赋给属性,为什么呢?因为此时操作的name实际上是方法中的,跟类中的属性完全不沾边。
另外,这个程序代码中,有一个成员变量name,同时在方法中有个形式参数,参数名也是name。然后在方法中将形式参数name的值传递给成员变量name。虽然我们可以看明白这个代码的含义,但是作 为Java编译器它是怎么判断使用哪个变量的呢?到底是将形式参数name的值传递给成员变量name,还是反过来讲成员变量name的值传递给形式参数name呢?此时this这个关键字就起到作用了,这种情况下使用this这个关键字代表的就是类中的成员变量,又叫做类的属性。所以此时,为了明确的表示出哪一个是类中的属性,就要加上“this.属性名称”的操作.
将ThisTest类的代码改进如下:
package 关键字;
public class ThisTest {
private String name; //定义一个成员变量name
public void setName(String name) {
//设置姓名,定义一个形参name
this.name=name;
}
public String getName( ) {
//获得姓名 return "姓名:"+name;
return name;
}
public static void main(String[] args) {
ThisTest thisTest=new ThisTest();
thisTest.setName("张三");;
System.out.println("姓名:"+thisTest.getName());
}
}
结果:姓名:张三
这时,setName中的name代表的就是类中的成员变量,而赋值号右边的name则是方法的形式参数,代码name就是将形式参数的值传递给成员变量。
小结:在方法体内定义的变量称为局部变量,在类的内部方法体的外部定义的变量称为成员变量。如果成员变量和方法中的局部变量的名字相同时,那么在方法中成员变量将会被屏蔽。如果这个时候还要使用成员变量,就需要使用关键字this。使用this引用成员变量的方法格式:this.成员变量名。
2.2普通方法
package 关键字;
public class ThisTest1 {
private String name;
public void setName(String name)
{
this.name=name;
this.print();//调用本类中的print方法
}
public String getName( ) { return name; }
public void print( ) {
System.out.print("姓名:");
}
public static void main(String[] args) {
ThisTest1 thisTest1= new ThisTest1();
thisTest1.setName("张三");
System.out.println(thisTest1.getName());
}
}
结果:姓名:张三
2.3构造方法:
package 关键字;
public class Name {
public Name(){
this("张三");
}
public Name(String name){
this(name,18);
}
public Name(String name,int age){
System.out.println("姓名:"+name+",年龄:"+age);
}
public static void main(String[] args) {
Name name=new Name();
}
}
运行结果:姓名:张三,年龄:18
注意:在使用this关键字调用其他构造方法的时候,this()调用构造方法只能放在构造方法的首行,为的是能 够为类中的属性初始化;而且至少有一个构造方法是不用this调用,否则程序会出现错误。
3.super
属性:子父类都有的时候,要用super.name 去区分
普通方法:super.saySelf();调用父类的方法
构造方法:super("xx")(必须放在第一行)
4.static 静态
4.1.怎么使用?
类的方法、类的属性:都是通过类名. 访问的
类的方法去放问对象的属性??不可以
类方法访问类的属性?? 可以
4.2.什么时候使用??
确保程序里只有一个,并且确保线程安全(不能出现同时去修改的情况!!)
5.访问权限:类属性和对象属性 、方法对象方法
1) private 私有的
private 关键字是访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量)。 只能在声明 private(内部)类、方法或字段的类中引用这些类、方法或字段。在类的外部或者对于子类而言,它们是不可见的。 所有类成员的默认访问范围都是 package 访问,也就是说,除非存在特定的访问控制修饰符,否则,可以从同一个包中的任何类访问类成员。
2) protected 受保护的
protected 关键字是可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。可以在声明 protected 类、方法或字段的类、同一个包中的其他任何类以及任何子类(无论子类是在哪个包中声明的)中引用这些类、方法或字段。所有类成员的默认访问范围都是 package 访问,也就是说,除非存在特定的访问控制修饰符,否则,可以从同一个包中的任何类访问类成员。
8
3) public 公共的
public 关键字是可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。 可能只会在其他任何类或包中引用 public 类、方法或字段。所有类成员的默认访问范围都是 package 访问,也就是说,除非存在特定的访问控制修饰符,否则,可以从同一个包中的任何类访问类成员。
6.final
配置信息 和static一起用
7.instanceof 是不是这个实力