首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java 语言基础 (类和对象, 方法和封装, static 关键字和继承, 多态和特殊类)

的方式 static 修饰内部类可以直接作为一个普通类来使用 使用方式 开发中只有隶属类层级, 并被所有对象共享的内容, 才可以使用 static 关键字修饰 构造方法不再初始化静态成员变量 用静态成员方法访问静态成员变量...super 关键字 用来初始化静态成员变量, 可以执行静态方法 构造块和静态代码块执行顺序 执行父类的静态代码块, 执行子类的静态代码块 执行父类的构造块, 执行父类的构造方法体 执行子类的构造块,...从 Java 5 开始允许返回子类类型 要求方法的访问权限不能变小, 可以相同或变大 要求方法不能抛出更大的异常 (异常机制) 访问控制符 修饰符 本类 同一个包中的类 子类 其他类 public 可以访问...实际意义: 不在于创建对象而在于被继承 抽象类和抽象方法的关系 抽象类可以有成员变量, 构造方法, 成员方法 抽象类可以没有抽象方法, 也可以有抽象方法 拥有抽象方法的类必须是抽象类 真正意义上的抽象类...元注解 @Inherited -- 子类继承超类的注解 注解本身不可以继承 如果一个超类被该注解标记过的注解进行注解时, 并且子类没有任何注解应用时, 则子类就继承超类的注解 元注解 @Repeatable

82330

Java基础知识面试题(2020最新版)

对于Java而言,它多态的实现机制遵循一个原则:当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法...选择抽象类的时候通常是如下情况:需要定义子类的行为,又要为子类提供通用的功能。  普通类和抽象类有哪些区别?  普通类不能包含抽象方法,抽象类可以包含抽象方法。...从本质上讲,变量其实是内存中的一小块区域  成员变量:方法外部,类内部定义的变量  局部变量:类的方法中的变量。  成员变量和局部变量的区别  作用域  成员变量:针对整个类有效。...静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制  在一个静态方法内调用一个非静态成员为什么是非法的? ...(); 成员内部类  定义在类内部,成员位置上的非静态类,就是成员内部类。

34010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java基础知识面试题(2020最新版)

    对于Java而言,它多态的实现机制遵循一个原则:当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法...选择抽象类的时候通常是如下情况:需要定义子类的行为,又要为子类提供通用的功能。  普通类和抽象类有哪些区别?  普通类不能包含抽象方法,抽象类可以包含抽象方法。...从本质上讲,变量其实是内存中的一小块区域  成员变量:方法外部,类内部定义的变量  局部变量:类的方法中的变量。  成员变量和局部变量的区别  作用域  成员变量:针对整个类有效。...静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制  在一个静态方法内调用一个非静态成员为什么是非法的? ...(); 成员内部类  定义在类内部,成员位置上的非静态类,就是成员内部类。

    45931

    Java基础知识面试题(2020最新版)

    对于Java而言,它多态的实现机制遵循一个原则:当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法...选择抽象类的时候通常是如下情况:需要定义子类的行为,又要为子类提供通用的功能。 普通类和抽象类有哪些区别? 普通类不能包含抽象方法,抽象类可以包含抽象方法。...从本质上讲,变量其实是内存中的一小块区域 成员变量:方法外部,类内部定义的变量 局部变量:类的方法中的变量。 成员变量和局部变量的区别 作用域 成员变量:针对整个类有效。...静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制 在一个静态方法内调用一个非静态成员为什么是非法的?...(); 成员内部类 定义在类内部,成员位置上的非静态类,就是成员内部类。

    98030

    【2022最新Java面试宝典】—— Java基础知识面试题(91道含答案)

    对于Java而言,它多态的实现机制遵循一个原则:当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法...从本质上讲,变量其实是内存 中的一小块区域 成员变量:方法外部,类内部定义的变量 局部变量:类的方法中的变量。 成员变量和局部变量的区别 作用域 成员变量:针对整个类有效。...也就是说,调用静态方法可以无需创建对象。 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访 问实例成员变量和实例方法;实例方法则无此限制 50....在一个静态方法内调用一个非静态成员为什么是非法的? 由于静态方法可以不通过对象进行调用,因此在静态方法里,不能调用其他非静态变量,也不可以 访问非静态变量成员。 51. 什么是方法的返回值?...(); } } 定义在实例方法中的局部类可以访问外部类的所有变量和方法,定义在静态方法中的局部类只能访 问外部类的静态变量和方法。

    70430

    《Java从入门到失业》第五章:继承与多态(5.1-5.7):继承

    最后,我们总结一下: 对于超类public的属性和方法,外部可以直接通过子类访问。...对于超类protected的属性和方法,子类中可以通过super.属性和super.方法来访问,外部不可见 对于超类private的属性和方法,子类无法访问。...5.6覆盖超类的属性        既然从内存上,超类和子类是相对独立存在的,那么我们思考一个问题,子类可以编写和超类同样名字的属性吗?答案是可以。...事实上,我们在子类中定义和超类同名的属性,有4种情况: 子类和超类都是成员属性 子类和超类都是静态属性 子类是静态属性,超类是成员属性 子类是成员属性,超类是静态属性 不管是以上哪种情况,都会隐藏超类同名属性...也就是说AWM是Gun,换句话说,也就是超类变量是可以引用子类对象的。其实理由很充分,因为对外部来说,AWM拥有全部Gun类的可见属性和方法,外部可以用变量gun调用所有的Gun类的可见属性和方法。

    57520

    JAVA 1-6章测试题

    答:局部变量与成员变量的区别: 1>局部变量是定义在类中的方法体中,而成员变量是定义在类中方法体外的; 2>局部变量只能在所定义的方法体中或者代码块中使用,而成员变量在本类中都可以使用。...1>类是相同属性和方法的封装体,因此类具有封装性; 2>子类可以在继承父类中能够继承的属性和方法的基础上,再增加自己特有的属性和方法,因此类具有继承性; 3>在一个类层次中,定义为父类的对象可被赋值为其任何子类的对象...2>Super:如果父类中没有提供无参数的构造方法,那么,我们必须通过super语句指导子类调用父类中的其他构造方法; 3>当子类中的局部变量或成员变量与父类中的成员变量同名时,通过super访问父类的成员变量...答:1>被abstract修饰,不能被实例化; 2>抽象类可以包含抽象方法; 3>抽象类的子类也可以是抽象类; 4>继承抽象类的非抽象类,必须实现超类中的全部抽象方法 44、对于定义在方法体中的内部类...抽象类可以没有抽象方法,但含有抽象方法的类必须申明为抽象类。 51、静态内部类可以有静态成员,而非静态内部类则不能有静态成员对吗?为什么? 答:对!

    84930

    Java知识面试题复习(三)Java面向对象

    对于Java而言,它多态的实现机制遵循一个原则:当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法...选择抽象类的时候通常是如下情况:需要定义子类的行为,又要为子类提供通用的功能。 普通类和抽象类有哪些区别? 普通类不能包含抽象方法,抽象类可以包含抽象方法。...从本质上讲,变量其实是内存中的一小块区域 成员变量:方法外部,类内部定义的变量 局部变量:类的方法中的变量。 成员变量和局部变量的区别 作用域 成员变量:针对整个类有效。...静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制 在一个静态方法内调用一个非静态成员为什么是非法的?...(); 成员内部类 定义在类内部,成员位置上的非静态类,就是成员内部类。

    38230

    面向对象的三大特性讲义

    注意: 有了继承以后, 我们在定义一个类的时候, 可以在一个已经存在的类的基础上, 还可以定义自己的新成员. 7.2 格式 在Java中, 可以通过extends关键字来实现类与类的继承, 具体格式如下...解释: 可以理解为父类对象引用. 7.6.2 用法 功能 本类 父类 访问成员变量 this.成员变量名 super.成员变量名 访问构造方法 this(...) super(...)...s1.show(); s2.show(); } } 9.2.4 静态方法的访问特点及注意事项 访问特点 静态方法只能访问静态的成员变量和静态的成员方法....结论: 非静态方法可以访问所有成员(非静态变量和方法, 静态变量和方法) 尝试在show3()方法中, 调用: 姓名, 年龄, show2(), show4(). 结论: 静态方法只能访问静态成员....抽象类 10.1 概述 回想前面我们的猫狗案例, 提取出了一个动物类, 这个时候我们可以通过Animal an = new Animal();来创建动物对象, 其实这是不对的, 因为, 我说动物, 你知道我说的是什么动物吗

    56700

    Python面向对象

    就像C++类使用private、protected一样对类的成员访问进行限制一样 默认情况下,Python中的属性和方法都是公开的,可以在对象外部访问 私有变量 Python并没有真正的私有化支持...但这样的私有变量或方法还是可以访问的,访问形式如:实例名._类名变量名、实例名._类名方法名() 以单下划线开头的时保护成员变量,只有本类和子类成员实例能访问这些变量 ?...继承&&派生 一个新类从已有类那里获得其已有特性,这种现象称为继承。从一个已有类(父类,Python叫超类)产生一个新的子类,称为类的派生。...,将在父类中查找 在子类中可以重写超类的方法(包括构造函数),重写构造函数时,要确保在子类的构造函数中调用超类的构造函数,否则可能无法正确的初始化对象 Python中所有的方法实际上是virtual...抽象基类 抽象基类是不能(至少是不应该)实例化的类,其职责是定义子类应该实现的一组抽象方法。Python可通过引入ABC模块实现抽象基类,使用@abstractmethod装饰器将方法标记为抽象的。

    78610

    Java——抽象类与接口的前世今生

    这不是一个好思路:假设有一个Shape引用变量,该变量实际上引用到Shape子类的实例,那么这个Shape变量就无法调用calPerimeter()方法,必须将其强制类型转换为其子类类型,才可调用calPerimeter0...抽象类可以包含成员变量、方法(普通方法和抽象方法都可以)、构造器、初始化块、内部类(接口、枚举)5种成分。抽象类的构造器不能用于创建实例,主要是用于被其子类调用。...接口中可以包含成员变量(只能是静态常量),方法(只能是抽象实例方法、类方法、默认方法或私有方法),内部类(包括内部接口,枚举)定义 接口中定义的常量系统会自动为常量加上static和final两个修饰符...接口里只能定义静态常量,不能定义普通成员变量;抽象类里则既可以定义普通成员变量,也可以定义静态常量。...Java抽象类中可以包含main方法吗? 是的,抽象类可以包含main方法,它只是一个静态方法,你可以使用main方法执行抽象类,但不可以创建任何实例。

    81920

    【计算机本科补全计划】Java学习笔记(四) 修饰符

    感伤~ 不如看Java,对了,我要推荐国漫--《一人之下》,很好看,很有趣,各路方言看着满满的土气,但这才是国漫吗。。...protected 访问修饰符不能修饰类和接口,方法和成员变量能够声明为 protected,但是接口的成员变量和成员方法不能声明为 protected。...final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。 abstract 修饰符,用来创建抽象类和抽象方法。...局部变量不能被声明为 static 变量。 静态方法:static 关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据。...### 14、 volatile 修饰符 volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。

    89290

    Java基础重构-面向对象

    而我们非static 修饰的变量它属于的是实例的变量,所以stati成员不能直接 访问静态成员 为什么同一类里,静态和非静态方法可以相互调用?...Java 里对封装的定义是:每个类都应该封装它内存信息和实现细节,而只暴露必要的方法给其他类使用。但在继承关系中,子类可以直接访问父类的成员变量(内部信息)和方法,从而造成子类和父类的严重耦合。...在用法上,抽象类和接口也存在如下差别: 接口里只能包含抽象方法和默认方法,不能为普通方法提供方法实现;抽象类则完全可以包含普通方法。 接口里不能定义静态方法,抽象类里可以定义静态方法。...接口里只能定义静态常量,不能定义普通成员变量;抽象类既可以定义普通成员变量,也可以定义静态常量。...枚举类可以包含抽象方法吗?

    65530

    Java对象和多态

    来访问我们类中的成员变量,我们可以通过类创建的对象来访问和修改这些变量。成员变量是属于对象的!...# 5.2 继承 继承属于非常重要的内容,在定义不同类的时候存在一些相同属性,为了方便使用可以将这些共同属性抽象成一个父类,在定义其他子类时可以继承自该父类,减少代码的重复定义,子类可以使用父类中非私有的成员...关键字来访问,注意,子类可以具有和父类相同的成员变量!...# 5.3.5 抽象类 类本身就是一种抽象,而抽象类,把类还要抽象,也就是说,抽象类可以只保留特征,而不保留具体呈现形态,比如方法可以定义好,但是我可以不去实现它,而是交由子类来进行实现!...,抽象类可以使用 abstract 关键字来表明一个方法为抽象方法,也可以定义普通方法,抽象方法不需要编写具体实现(无方法体)但是必须由子类实现(除非子类也是一个抽象类)!

    30250

    14道Java开发岗面试题

    子类覆盖父类方法,方法访问权限必须大于等于父类 5.覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类; 表反派附议 overload要注意以下的几点: 1.重载只和参数列表有关...2.抽象类中可以有普通成员变量,接口中没有普通成员变量 3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。...抽象类中的抽象方法的访问类型可以是public,protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。...5.抽象类和接口中都可以包含静态成员变量, 抽象类中的静态成员变量的访问类型可以任意, 但接口中定义的变量只能是public static final类型,并且默认即为public static final...一个类可以实现多个接口,但只能继承一个抽象类 接口中不能有构造方法 接口中没有普通成员变量 接口中的所有方法必须都是抽象的,不能有非抽象的普通方法 接口中的抽象方法只能是public类型的,并且默认即为

    41710

    PHP基本概念

    抽象类不能实例化,普通类可以继承抽象类。 建议仅在部分 "内核" 代码中使用接口,从语义上考虑,可以更多的使用抽象类。 静态变量 静态变量属于类,而不属于类的某个实例。...另外还有一个专门放常量的地方。 程序结束释放 ? 父类可以调用子类中的特有方法吗?...不可以被类的实例调用 public protected可以被子类调用,private不可以被子类调用 关于继承 子类中方法的访问权限一定不能低于父类被覆盖方法的访问权限,也就是一定要高于或等于父类方法的访问权限...在访问PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(定义常量)或者static(声明静态),那么就必须使用操作符::,反之如果被引用的变量或者方法没有被声明成const或者static...另外,如果从类的内部访问const或者static变量或者方法,那么就必须使用自引用的self,反之如果从类的内部访问不为const或者static变量或者方法,那么就必须使用自引用的$this。

    1.1K20

    Effective-java-读书笔记之类和接口

    ): 缺省(default)访问级别, 声明该成员的包内部的任何类都可以访问这个成员.受保护的(protected): 声明该成员的类的子类和包内部的任何类可以访问这个成员.公有的(public).如果覆盖了超类中的一个方法..., 子类中的访问级别就不允许低于超类中的访问级别....(从Java 8开始接口也可以包含默认方法了.)抽象类需要继承(Java只允许单继承), 但是可以实现多个接口.使用接口的好处:现有的类可以很容易被更新, 以实现新的接口.接口是定义混合类型(mixin...实例的数据类型没有提供任何关于其风格的线索.标签类过于冗长, 容易出错, 效率低下.用子类型修正:定义抽象基类, 方法行为若依赖于标签值, 则定义为抽象方法....在任何可以声明局部变量的地方, 都可以声明局部类, 并且局部类也遵守同样的作用域规则.局部类有名字, 可以被重复地使用. 只有当局部类在非静态环境中定义的时候, 才有外围实例.

    71671

    -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态

    •可以通过类名调用 static关键字注意事项   •在静态方法中是没有this关键字的   •静态方法只能访问静态的成员变量和静态的成员方法 静态变量与成员变量 所属不同   •静态变量属于类,...多个类可以称为子类,单独这个类称为父类或者超类。 子类可以直接访问父类中的非私有的属性和行为。 通过extends 关键字让类与类之间产生继承关系。   ...抽象类:   •Java中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称为抽象方法, 包含抽象方法的类就是抽象类。...成员内部类 局部内部类 内部类定义在成员位置上 •可以被private static成员修饰符修饰。 •被static修饰的内部类只能访问外部类中的静态成员。...(); 内部类定义在局部位置上 •也可以直接访问外部类中的成员。

    69010

    100道最新Java面试题,常见面试题及答案汇总

    赶紧码住吧~~文末有福利 Q1:Java内部类和子类之间有什么区别? 答案:内部类是指在一个外部类的内部再定义一个类,内部类对外部类有访问权限,可以访问类中定义的所有变量和方法。...3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。 Q17:我们可以声明一个抽象类,但是没有任何抽象方法吗?...答案:抽象类和接口之间的主要区别在于,抽象类可以拥有任意范围的成员数据,同时也可以拥有自己的非抽象方法,但是接口方式中,它仅能够有静态、不能修改的成员数据,同时它所有的方法都必须是抽象的。...答案:类的私有成员在该类的范围之外是不可访问的,即使在同一个包中也不能访问任何其他类。 Q46:同一类中可以定义重名的方法吗?...答案:不能,将局部变量定义为静态变量会导致编译错误。 Q76:Interface中可以有静态方法吗?

    5.2K21

    4:面向对象高级

    因为调用抽象方法没意义。 3,抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化。  否则,这个子类还是抽象类。 1,抽象类中有构造函数吗?  有,用于给子类对象进行初始化。...2,抽象类可以不定义抽象方法吗?   可以的。 但是很少见,目的就是不让该类创建对象。AWT的适配器对象就是这种类。  通常这个类中的方法有方法体,但是却没有内容。...5,抽象类一定是个父类吗?   是的。因为需要子类覆盖其方法后才可以对子类实例化。 ...因为成员函数存在覆盖特性。  ? 3,静态函数。    编译时:参考引用型变量所属的类中的是否有调用的静态方法。   运行时:参考引用型变量所属的类中的是否有调用的静态方法。  ...内部类在局部位置上只能访问局部中被final修饰的局部变量。

    688160
    领券