栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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.出现在子类中的构造方法第一句时,suoer()父类无参数构造方法/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("重写父类方法");
	}


}

错误:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/424507.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号