Java 普通类与方法

问:下面程序的运行结果是什么?
        public class Test extends Date {
            public static void main(String[] args) {
                new Test().test();
            }

            public void test() {
                System.out.println(super.getClass().getName());
            }
        }

答:打印的是 Test 类名。
由于 getClass() 方法在 Object 类是 final 的,子类不能覆盖该方法,所以在 test 方法中调用 getClass().getName() 方法的实质就是在调用从父类继承的 getClass() 方法,等效于调用 super.getClass().getName() 方法;然而 getClass() 方法来自 Object 类且其返回对象在运行时的类型,所以运行时类型为 Test,如果想得到父类的名称,应该调用 getClass().getSuperClass().getName() 获取。

问:Java 创建对象的方式有哪几种?

答:常见的创建对象方式主要有 5 种,该题在某些场合下会变着法子问你除过 new 的方式外还可以怎么创建对象,答案都是一样的,如下。

  • 使用 new 关键字(调用构造方法);

  • 使用 Class 类的 newInstance 方法(调用构造方法);

  • 使用 Constructor 类的 newInstance 方法(调用构造方法);

  • 使用 clone 方法(没有调用构造方法);

  • 使用反序列化(没有调用构造方法);

问:abstract 的方法是否可同时是 static、是否可同时是 native、是否可同时是 synchronized 的?为什么?

答:都不可以,原因如下。
首先 abstract 是抽象的(指方法只有声明没有实现,实现要放入声明该类的子类中),static 是一种属于类而不属于对象的关键字,synchronized 是一种线程并发锁关键字,native 是本地方法,其与抽象方法类似,只有声明没有实现,但是它把具体实现移交给了本地系统的函数库。

对于 static 来说声明 abstract 的方法说明需要子类重写该方法,如果同时声明 static 和 abstract,用类名调用一个抽象方法是行不通的。

对于 native 来说这个东西本身就和 abstract 冲突,因为他们都是方法的声明,只是一个把方法实现移交给子类,另一个是移交给本地操作系统,如果同时出现就相当于即把实现移交给子类又把实现移交给本地操作系统,那到底谁来实现具体方法就是个问题了。

对于 synchronized 来说同步是需要有具体操作才能同步的,如果像 abstract 只有方法声明,则同步就不知道该同步什么了。

问:抽象类(abstract class)和接口(interface)有什么区别?

答:首先含有 abstract 修饰符的 class 为抽象类,abstract 类不能创建实例对象,含有 abstract 方法的类必须定义为 abstract class,abstract class 类中的方法不必是抽象的,abstract class 类中定义的抽象方法必须在具体的子类中实现,所以不能有抽象构造方法或抽象静态方法,如果子类没有实现抽象父类中的所有抽象方法则子类也必须定义为 abstract 类型。对于接口可以说是抽象类的一种特例,接口中的所有方法都必须是抽象的(接口中的方法定义默认为 public abstract 类型,接口中的成员变量类型默认为 public static final)。
具体的区别如下:

  • 抽象类可以有构造方法;接口中不能有构造方法。

  • 抽象类中可以有普通成员变量或者常量或者静态变量;接口中没有普通成员变量和静态变量,只能是常量(默认修饰符为 publci static final)。

  • 抽象类中可以包含非抽象的普通方法和抽象方法及静态方法;接口中的所有方法必须都是抽象的,不能有非抽象的普通方法和静态方法(默认修饰符为 public abstract)。

  • 抽象类中的抽象方法访问类型可以是 public、protected 的;接口中的抽象方法只能是 public 的(默认修饰符为 public abstract)。
    一个子类可以实现多个接口,但只能继承一个抽象类。

问:Java 访问修饰符有哪些?有什么区别和特点?

答:Java 的访问修饰符关键字主要有 public、protected、default、private 四个,其决定了紧跟其后被定义的东西可以被谁使用,具体的区别如下所示。

  • public 访问权限为当前类、同一个包、同包子类、非同包子类、其他包都可用。

  • protect 访问权限为当前类、同一个包、同包子类、非同包子类,其他包下无法访问到。

  • default 访问权限为当前类、同一个包,同包子类、其他包下和非同包子类无法访问到。

  • private 访问权限为当前类,同一个包、同包子类、非同包子类、其他包都无法访问到。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,478评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,825评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,482评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,726评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,633评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,018评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,168评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,320评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,264评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,288评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,995评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,587评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,909评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,284评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,862评论 2 339

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,531评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,048评论 0 62
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,620评论 0 11
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-java.h...
    eddy_wiki阅读 1,181评论 0 5
  • 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?答:可以有多个类,但只能有一个publ...
    岳小川阅读 904评论 0 2