Java中static--this--super--final关键字

1.static  静态修饰符

        1.被static修饰的变量是静态成员变量,可以类名访问,也可以对象访问

        2.被static修饰的方法是静态方法,可以类名访问也以对象访问

        3.同一个类中静态方法不能访问实例元素,this不能出现。

例如:

package GuanJianZi;

public class StaticGJZ {
	//被static修饰的变量是静态成员变量
	public static int id=1001;
	//实例方法
	public int age=18;
	//被static修饰的方法是静态方法
	public static void name(){
		System.out.println("张三");
	}
	public static void name2(){
		//同一个类中静态方法不能访问实例元素,this不能出现在静态方法中
		//System.out.println("年龄=="+age);//错误
		//System.out.println("年龄=="+this.id);//错误
	}
}
package GuanJianZi;

public class TestMain {

	public static void main(String[] args) {
		StaticGJZ sgjz=new StaticGJZ();
		//静态变量/静态方法可以类名访问,也可以对象访问
		System.out.println(StaticGJZ.id);
		System.out.println(sgjz.id);
		StaticGJZ.name();
		sgjz.name();
	}

}

 

2.this当前类对象

        1.出现在哪个类中就表示哪个类的对象

        2.在当前类中的构造方法/实例方法中访问当前类中的变量和方法,可以省略

        3.在当前类中的构造方法/实例方法中访问被隐藏的成员时不能省略

例如:

package GuanJianZi;

public class ThisGJZ {
//this 当前类对象,在当前类中的 构造方法/实例方法中访问当前类的变量和方法,可以省略
	int id=1001;
	static String name="张三";
	
	public  ThisGJZ(){
		System.out.println("构造方法");
	}
	public void shili(){
		System.out.println("实例方法");
	}
	public static void jingtai(){
		System.out.println("静态方法");
	}
	
	public ThisGJZ(String name){
		this.shili();
		this.jingtai();
		System.out.println("id=="+this.id);
		System.out.println("name=="+this.name);
	}
}

测试类

package GuanJianZi;

public class TestMain {

	public static void main(String[] args) {	
		ThisGJZ tgjz=new ThisGJZ("zhansgan");
		
	}

}

 3.super父类的对象

        1.出现在子类中的构造方法第一句时,super()父类无参数构造方法/super(参数)父类有参数构造方法。

        2.出现在子类中的实例方法时,表示访问父类的变量/方法

        3.访问隐藏的父类变量,super.变量名称,此时这个super表示父类的对象,一般指访问没有重写之前的父类方法,super.方法名称([参数]),此时这个super表示父类对象

例如:

package GuanJianZi;

public class SuperFuLei {
	public SuperFuLei(){
		System.out.println("父类无参数构造方法");
	}
	public SuperFuLei(String name){
		System.out.println("父类有参数构造方法");
	}
	
	//父类变量
	 int id=1001;
	 static String name="zhangsan";
	 public void shili(){
		 System.out.println("父类实例方法");
	 }
}
package GuanJianZi;

public class SuperZiLei extends SuperFuLei{
	public SuperZiLei(){
		//super();//父类无参数构造方法
		super("李四");//父类有参数构造方法
	}
	
	public void shili(){
		System.out.println("重写父类方法");
	}
	public void zilei(){
		//出现在子类实例方法时,表示访问父类的变量/方法
		//super--表示父类的对象
		//访问变量
		System.out.println(super.id);
		System.out.println(super.name);
		//访问方法----一般指访问没有重写之前的父类方法
		super.shili();
	}
}

测试类

package GuanJianZi;

public class TestMain {

	public static void main(String[] args) {
		SuperZiLei szl=new SuperZiLei();
		szl.zilei();
	}

}

 4.final 终极修饰符

        1.被final修饰的类,不能被继承,没有子类

package GuanJianZi;

public final class FuLei {
	
}
package GuanJianZi;

public class ZiLei extends FuLei{
	
}

错误:The type ZiLei cannot subclass the final class FuLei

        2. 被final修饰的变量,就是常量,不能被重新赋值

package GuanJianZi;

public class TestMain {

	public static void main(String[] args) {
		final String name="zhangsan";//局部变量
		System.out.println("name=="+name);
		 //name="lisi";//错误:被final修饰的变量,就是常量,不能被重新赋值
		System.out.println("name=="+name);
		
	}

}

         3.被final修饰的方法,不能被重写。

例如:

package GuanJianZi;

public class FuLei {
	 public final void shili(){
		 System.out.println("父类实例方法");
	 }
}
package GuanJianZi;

public class ZiLei extends FuLei{

	public void shili(){
		System.out.println("重写父类方法");
	}


}

错误:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值