精华内容
下载资源
问答
  • 不可继承的类用什么修饰
    千次阅读
    2021-02-28 12:03:58

    在java中有一些类并不能被继承,我们可以通过这些不能继承的类设计一些只读的不可变类。Java中不能被继承的类有哪些?

    c36256b81b6afb62b530d2e2584fbfe3.png

    在Java中,只要是被定义为final的类,也可以说是被final修饰的类,就是不能被继承的。

    这是final的规定:当你将final用于类身上时,一个final类是无法被任何人继承的,那也就意味着此类在一个继承树中是一个叶子类,并且此类的设计已被认为很完美而不需要

    进行修改或扩展。对于final类中的成员,你可以定义其为final,也可以不是final。而对于方法,由于所属类为final的关系,自然也就成了final型的。你也可以明确的给final

    类中的方法加上一个final,但这显然没有意义。

    例如:我们使用的String类,它也是不可被继承的类。

    那我们就一起来看看这个问题,首先我们要知道,如果你要判断一个类是否可以被继承的话,你要知道这个类是如何被定义的,所以我们先来看看这个String类是如何被定义的:

    c549149905b1fc1a43262c22b0978811.png

    以上就是这个String类的定义方式,我们可以明显的看到一个final修饰符!

    如果说整个类都是final(在它的定义前冠以final关键字),就表明自己不希望从这个类继承,或者不允许其他任何人采取这种操作。换言之,出于这样或那样的原因,我们的类肯定不需要进行任何改变;或者出于安全方面的理由,我们不希望进行子类化(子类处理)

    更多相关内容
  • Java 类不可继承的几种方法

    千次阅读 2021-06-30 13:27:10
    1.final 修饰符 public final class NoModifer { //没有修饰符 默认为包内可见 ...最常用的,被final 修饰修饰可以被继承 2.private 构造方法 package com.xinyu.test.java.Test; public class

    1.final 修饰符

    public final class NoModifer {
        //没有修饰符  默认为包内可见
        int age = 10;
    
        public NoModifer(){
    
        }
    
    }
    
    public class Nomodifer2 extends NoModifer{
    }
    
    

    在这里插入图片描述
    最常用的,被final 修饰符修饰的类,不可以被继承

    2.private 构造方法

    package com.xinyu.test.java.Test;
    
    public class NoModifer {
        //没有修饰符  默认为包内可见
        int age = 10;
    
        private NoModifer(){
    
        }
    
    }
    
    package com.xinyu.test.java.Test;
    
    public class Nomodifer2 extends NoModifer{
    }
    
    

    在这里插入图片描述
    构造方法私有的类,不可以被继承。因为继承的类,一定要调用父类的构造方法。

    注意:就算构造方法是私有的,但是如果继承类为内部类,那么也是可以继承私有构造方法的父类的

    public class NoModifer {
        //没有修饰符  默认为包内可见
        int age = 10;
    
        private NoModifer(){
    
        }
        
        private void test(){}
    
        public class NoModifer2 extends NoModifer{
    
            public void test2(){
                NoModifer.this.test();
            }
        }
    
    }
    
    
    展开全文
  • java中继承有哪些?

    千次阅读 2021-02-12 17:13:35
    在Java中,只要是被定义为final的,也可以说是被final修饰,就是能被继承的。因为jdk的开发者认为,有一些最基本的没要必要对开发者开放,如果用户继承时操作有误,很可能引入很多问题。为了防止用户对...

    97b46086fab6434f086bdc20d6e6d29e.png

    在Java中,只要是被定义为final的类,也可以说是被final修饰的类,就是不能被继承的。

    因为jdk的开发者认为,有一些最基本的类没要必要对开发者开放,如果用户继承时操作有误,很可能引入很多问题。为了防止用户对基本类进行相应的扩展,也体现了java设计过程中的开闭原则,最终将这些类设计成为final的。

    这是final的规定:当你将final用于类身上时,一个final类是无法被任何人继承的,那也就意味着此类在一个继承树中是一个叶子类,并且此类的设计已被认为很完美而不需要

    进行修改或扩展。对于final类中的成员,你可以定义其为final,也可以不是final。而对于方法,由于所属类为final的关系,自然也就成了final型的。你也可以明确的给final

    类中的方法加上一个final,但这显然没有意义。

    java中常见的不能被继承的类有如下:String,

    StringBuffer,

    StringBuilder,

    基本类型的包装类如Double,Integer,Long

    等等。

    我们来看看这个String类是如何被定义的:

    c549149905b1fc1a43262c22b0978811.png

    以上就是这个String类的定义方式,我们可以明显的看到一个final修饰符!

    如果说整个类都是final(在它的定义前冠以final关键字),就表明自己不希望从这个类继承,或者不允许其他任何人采取这种操作。换言之,出于这样或那样的原因,我们的类肯定不需要进行任何改变;或者出于安全方面的理由,我们不希望进行子类化(子类处理)

    展开全文
  • Final当关键字final用来修饰类时,其含义是该类不能再派生子,换句话说,任何其他继承用final修饰,即使该的访问权限为pubilc类型,也能被继承;否则,将编译报错。只有当需要确保中的方法都...

    前言

    关键字Final不仅可以用来修饰变量,而且对类及其方法的继承也有很大的影响,本文将从类与方法两个方面介绍final关键字的功能。

    Final类

    当关键字final用来修饰类时,其含义是该类不能再派生子类,换句话说,任何其他类都不能继承用final修饰的类,即使该类的访问权限为pubilc类型,也不能被继承;否则,将编译报错。

    只有当需要确保类中的方法都不被重写时才应该建立最终(final)类,final关键字将会为这些方法提供安全,没有任何人能够重写final类中的方法,因为不能继承。

    例:

    package chapeter04;

    final class Father { }

    public class Sample3_13 extends Father

    {

    public static void main(String[] args)

    {

    }

    }

    报错:

    32f06d04f81baa7a08838210b1933123.png

    可以看出,编译找不到Father类。

    Final方法

    当关键字final修饰方法后,该方法在子类中将无法重写,只能继承,例:

    package chapeter04;

    class Father

    {

    public final void show()

    {

    System.out.println("我是final方法,可以被继承,但是不能被重写");

    }

    }

    class Son extends Father { }

    public class Sample4_15

    {

    public static void main(String[] args)

    {

    // TODO Auto-generated method stub

    Son s= new Son();

    s.show();

    }

    }

    运行结果:

    53acd336ddc22bbf6d3194456d5472c3.png

    可以看出,代码正常编译运行,final的方法show被成功继承。但是若图将final的方法在子类中重写,将会编译报错:

    class Son extends Father

    {

    public void show()

    {

    System.out.println("重写Final方法");

    }

    }

    c9241dc8c3ab3ce3eef67b5b36ab3994.png

    可以看出final的方法不能被继承。

    要恰当使用final方法,只有在子类覆盖某个方法会带来问题时,再将此方法设置为final方法,一般情况下不必使用。因为防止子类覆盖会丢失一些面向对象的优点,包括通过覆盖实现的可扩展性。

    以上所述是小编给大家介绍的Java之终止继承:Final类和Fianl方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    展开全文
  • using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace sealedDemo ... //密封允许继承 public static class CSealed // static { public static vo...
  • 如何让类不能被继承

    2021-03-10 15:48:51
    方法一:借助 final 关键字,该关键字修饰类不能被继承。 #include <iostream> using namespace std; class Base final { }; class Derive: public Base{ // error: cannot derive from 'final' base '...
  • 首先你要知道自己为什么final,final干什么! 6.8.2 final方法 之所以要使用final方法,可能是出于对两方面理由的考虑。第一个是为方法“上锁”,防止任何继承类改变它的本来含义。设计程序时,若希望一个方法...
  • 答案是能被继承。下面来看看究竟是为什么? Java中对String的定义: public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for ...
  • java抽象 继承

    千次阅读 2021-03-08 06:02:32
    关于java抽象 继承的搜索结果回答抽象和接口的区别:默认的方法实现抽象可以有默认的方法实现完全是抽象的。接口根本存在方法的实现。抽象中可以有已经实现了的方法,也可以有被abstract修饰的方法(抽象...
  • java中被final修饰类不能被继承

    千次阅读 2018-11-05 17:29:23
    final方法 之所以要使用final方法,可能是出于对两方面理由的考虑。第一个是为方法“上锁”,防止任何继承类改变它的本来含义。设计程序时,若希望一个方法的...不变,而且不可被覆盖或改写,就可以采取这种做法。 ...
  • 构造方法没有返回类型,更不能定义为void,不可加其他修饰符。 若没有被定义,则在编译的时候,会自动加上一个默认的构造方法,但是不会有任何操作。 可重载多个构造方法。 示例: 修饰符 构造方法名(参数列表){ //...
  • final可以继承其他

    千次阅读 2021-02-26 12:48:18
    设计程序时,若希望一个方法的行为在继承期间保持不变,而且不可被覆盖或改写,就可以采取这种做法。采用final方法的第二个理由是程序执行的效率。将一个方法设成final后,编译器就可以把对那个方法的所有调用都置入...
  • 类什么情况下可以被继承

    万次阅读 2017-06-14 17:23:11
    1、如果被final修饰,那么此类可以被继承。 2、如果中只有private的构造方法,那么此类可以被继承。  其原因在于:  (1)一个一定会有构造函数,如果写,那就是默认的无参构造函数,如果写,就...
  • 我们知道在Java中,String是不可变的、final的。Java在运行时也保存了一个字符串池(String pool),这使得String成为了一个特别的。 主要是为了 “ 效率 ” 和 “ 安全性 ” 的缘故。 若 String 允许...
  • String 能被继承?为什么

    千次阅读 2021-08-07 09:53:40
    不能,因为String是被final修饰的类型,final是不能被继承的,String不可变类型(Immutable)。 至于为什么要加final或将String设置成不可,主要是两点: 第一个原因是线程安全:不可变对象始终是...
  • final修饰,为最终,该类不能被继承。如String 2. final修饰的方法可以被继承和重载,但能被重写 3. final修饰的变量能被修改,是个常量 举例说明: public class Person { private S...
  • String什么不能被继承

    千次阅读 2020-03-26 17:34:38
    我们都知道String类不能被继承,但为什么不能却能回答地很完整。 首先我们可以看下String的源码(部分): public final class String implements java.io.Serializable, Comparable<String>, CharSequence { ...
  • 默认的修饰符(default)可以保证该外部类可被同一包的其它使用。 public可以使该在同一工程的任意位置(本包和其它包)中使用。 若声明为private,该类不能被任何其它调用,则失去了在实际应用中的意义(一...
  • String能被继承吗,为什么?

    千次阅读 2021-12-23 11:05:16
    final修饰一个时,表明这个类不能被继承。final中的成员变量可以根据需要设为final,但是要注意final中的所有成员方法都会被隐式地指定为final方法。 2.修饰方法  使用final修饰方法的原因有两个。第一...
  • java学习笔记(12-继承、抽象

    千次阅读 2021-03-15 17:45:41
    1.继承关键字extendsjava中继承特点:在Java中,只支持单继承允许多继承,也就是说一个只能有一个直接父类多个可以继承一个父类在Java中,多层继承是可以的,即一个的父类可以再去继承另外的父类,例如C...
  • 主要介绍了kotlin基础教程之继承的相关资料,需要的朋友可以参考下
  • Java 和接口的继承

    千次阅读 2021-02-12 14:00:34
    继承的概念继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。继承的主要作用在于,在已有基础上继续进行功能的扩充。继承的特性...
  • 先贴一下String的申明代码: public final class String implements java.io.Serializable, Comparable&lt;String&gt;, CharSequence {} 它最大的一个特点是被final修饰了。我们先看看官方怎么解释: ...
  • Java中的String什么不可

    千次阅读 2018-07-23 15:00:42
    1、什么是不可变? java角度来讲就是说成final的。 String不可变如下图: 假设给字符串s赋值为abcd,第二次重新赋值为...1、首先Stringfinal修饰的,这说明String不可继承 2、其次String的主力成员...
  • String类不可变以及不可总结

    千次阅读 2017-10-01 20:11:38
    String在java中是immutable(不可变),因为它被关键字final修饰。当String实例创建时就会被初始化,并且以后无法修改实例信息。String是工程师精心设计的艺术品。 一、String为什么不可变? 要了解String...
  • 抽象类不继承接口

    千次阅读 2017-09-21 10:21:43
    1. 抽象可以继承普通,但可以继承接口。 (public abstract class 抽象 extends 普通 { }) 2. 接口可以继承多接口,但可以继承抽象。 (public abstract class 接口1 extends 接口2,接口3 ,接口4{ }...
  • 抽象是否可继承具体?抽象中是否可以有静态的main方法? 上面这个题目我们来慢慢的剖析一下。先从基本的概念说起。 一、接口 官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的...
  • TS中继承修饰

    千次阅读 2019-07-10 17:37:18
    1、ts定义 class class Person { public name: string //属性 public关键词省略 constructor(name: string) { //构造函数 实例化触发的方法 this.name = name; } getName(): string { return this.name; } set...
  • 是否可以继承String

    2022-04-11 14:00:34
    String 是 final 可以被继承。 当我们鼠标悬浮String关键字上,按住ctrl键,鼠标点击可以看见这样一串代码:
  • 前面我们已经介绍了javascript中6种继承方式,这6中继承方式都是基于es5的,那么接下来我们要讲的是es6中新增的一种继承方式—— 继承 在es6中新引进了的概念,作为对象的模板。是对现实生活中一具有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 257,820
精华内容 103,128
关键字:

不可继承的类用什么修饰