java中final与static的区别

static修饰的方法: 

1、父类中的静态方法可以被继承、但不能被子类重写。

2、如果在子类中写一个和父类中一样的静态方法,那么该静态方法由该子类特有,两者不构成重写关系。

final修饰: 

1、修饰类表示不允许被继承。

2、修饰方法表示不允许被子类重写,但是可以被子类继承,不能修饰构造方法。

3、修饰变量表示不允许被修改 

a)方法内部的局部变量,使用前被赋值即可(只能赋值一次),没有必要非得初始化。 

b)类中的成员变量(如果没有在定义时候初始化,那么只能在构造代码块中或者构造方法中赋值) 

c)基本数据类型的变量(初始化赋值之后不能更改) 

d)引用数据类型的变量(初始化之后不能再指向另外一个对象,但对象的内容是可以变的)

代码实例:
class Demo{
		 public static void display(){
		  System.out.println("hello");
		 }
		 
		 public final void name()
		{
			System.out.println("name");
		}
    }

	class DemoTest extends Demo{
		 public static void display(){
		  System.out.println("nihao");
		 }
		 public void tt() {
			 display();
		 }
		 //出现错误提示,不能被子类修改
		 /*public void name()
		{
			
		}*/
	}
测试结果:
                Demo d=new Demo();
		d.display();//输出hello
		d=new DemoTest();//注意观察这条语句的输出,是输出hello还是nihao
		d.display();//输出hello
		DemoTest dTest=new DemoTest();//使用子类,查看其方法的实现
		dTest.display();//输出nihao
		dTest.tt();//输出nihao
		dTest.name();//输出name

                   

结论:

static修饰的方法中,当子类对父类中的方法进行重写时,那么子类中的static方法是子类所特有的。

使用final修饰的方法,子类只有继承权,没有修改权。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值