JavaSE 第二十三讲 static 与 final 使用陷阱 10.11

1.Static修饰方法

public class MyStatic
{
    public static void main(String[] args)
    {
        //MyStatic2 test = new MyStatic2();
        //test.output();

        MyStatic2.output();//可直接用【类名.方法名】的方式访问静态方法

    }
}

class MyStatic2
{
    public static void output()
    {
        System.out.println("output");
    }
}
public class StaticTest3
{
    public static void main(String[] args)
    {
        M m = new N();
        m.output();//执行结果为M
    }
}

class M
{
    public static void output()
    {
        System.out.println("M");
    }
}

class N extends M
{
    @Override //表示重写父类方法。无法编译。静态方法只能继承,不能重写。
    public static void output()
    {
        System.out.println("N");
    }
}

2.final关键字可修饰属性、方法、类。

3.final修饰类

public class FinalTest
{
    public static void main(String[] args)
    {
        F f = new F();//无法编译。final修饰的类是静态类,不能被继承。
    }
}

final class E
{

}

class F extends E
{

}

4.final修饰方法

public class FinalTest2
{
    public static void main(String[] args)
    {
        H h = new H();
        h.output(); 
    }
}

class G
{
    public final void output()//静态方法,不能被重写。
    {
        System.out.println("G");
    }
}

class H extends G
{
    public void output()
    {
        System.out.println("H");
    }
}

5.final 修饰属性

public class FinalTest3
{
    public static void main(String[] args)
    {
        People people = new People();
        people.age = 20;//无法编译。final修饰原生数据类型时,该原生数据类型的值不能发生变化。

    }
}

class People
{
    final int age = 10;
}
public class FinalTest4
{
    public static void main(String[] args)
    {
        People people = new People();
        
        //people.address = new Address();//无法编译。final修饰一个引用类型时,表示该引用类型不能再指向其他对象。
        
        people.address.name = "beijing";//可编译。但该引用所指向的对象的内容时可以变化的。

    }
}

class People
{
    final Address address = new Address();
}

class Address
{
    String name = "zhengzhou";
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,955评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,477评论 19 139
  • Java关键字final、static使用总结 一、final 根据程序上下文环境,Java关键字final有“这...
    孑孖阅读 2,920评论 0 0
  • final final类 final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。...
    吃瓜群众liu阅读 2,675评论 0 1
  • 你做过什么错误的决定?并且做完以后就立刻拍大腿后悔自己的智障的行为。 一看到这个问题,立刻想到半年前的一件事,一边...
    酸酸酸酸酸奶阅读 1,709评论 0 0