`
wangpan80
  • 浏览: 108672 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA功底之基础知识精华总结 (各类修饰符)

    博客分类:
  • Java
阅读更多
1、 对象的初始化 (1) 非静态对象的初始化 在创建对象时,对象所在类的所有数据成员会首先进行初始化。 基本类型:int型,初始化为0。 如果为对象:这些对象会按顺序初始化。 ※在所有类成员初始化完成之后,才调用本类的构造方法创建对象。 构造方法的作用就是初始化。 (2) 静态对象的初始化 程序中主类的静态变量会在main方法执行前初始化。 不仅第一次创建对象时,类中的所有静态变量都初始化,并且第一次访问某类(注意此时 未创建此类对象)的静态对象时,所有的静态变量也要按它们在类中的顺序初始化。 2、 继承时,对象的初始化过程 (1) 主类的超类由高到低按顺序初始化静态成员,无论静态成员是否为private。 (2) 主类静态成员的初始化。 (3) 主类的超类由高到低进行默认构造方法的调用。注意,在调用每一个超类的默认构造 方法前,先进行对此超类进行非静态对象的初始化。 (4) 主类非静态成员的初始化。 (5) 调用主类的构造方法。 例如: //父静态变量-->子静态变量-->父非静态变量-->父静态代码块-->父构造函数------>子非变量-->子静态代码块-->子构造函数 public class AA { public static void main(String args[]) { E bobj = new E(); System.out.println("-------------------------------"); D bo = new E(); } } class D { int i = ff(); static String yy = out(); D() { System.out.println("D.D called"); } int ff() { System.out.println("D.ff called"); return 47; } static String out (){ System.out.println("D.out called"); return "47"; } } class E extends D { int i = f(); static String yy = out(); int j; { j = 37; System.out.println("initialization block executed"); } E() { System.out.println("E.E called"); } final int f() { System.out.println("E.f called"); return 47; } static String out (){ System.out.println("E.out called"); return "47"; } } 结果: D.out called E.out called D.ff called D.D called E.f called initialization block executed E.E called ------------------------------- D.ff called D.D called E.f called initialization block executed E.E called 3、 关于构造方法 (1) 类可以没有构造方法,但如果有多个构造方法,就应该要有默认的构造方法,否则在继承此类时,需要在子类中显式调用父类的某一个非默认的构造方法了。 (2) 在一个构造方法中,只能调用一次其他的构造方法,并且调用构造方法的语句必须是 第一条语句。 4、 有关public、private和protected (1) 无public修饰的类,可以被其他类访问的条件是:a.两个类在同一文件中,b.两个类 在同一文件夹中,c.两个类在同一软件包中。 (2) protected:继承类和同一软件包的类可访问。 (3) 如果构造方法为private,那么在其他类中不能创建该类的对象。 5、 抽象类 (1) 抽象类不能创建对象。 (2) 如果一个类中一个方法为抽象方法,则这个类必须为abstract抽象类。 (3) 继承抽象类的类在类中必须实现抽象类中的抽象方法。 (4) 抽象类中可以有抽象方法,也可有非抽象方法。抽象方法不能为private。 (5) 间接继承抽象类的类可以不给出抽象方法的定义。 6、 final关键字 (1) 一个对象是常量,不代表不能转变对象的成员,仍可以其成员进行操作。 (2) 常量在使用前必须赋值,但除了在声明的同时初始化外,就只能在构造方法中初始化 。 (3) final修饰的方法不能被重置(在子类中不能出现同名方法)。 (4) 如果声明一个类为final,则所有的方法均为final,无论其是否被final修饰,但数据 成员可为final也可不是。 7、 接口interface (用implements来实现接口) (1) 接口中的所有数据均为 static和final即静态常量。尽管可以不用这两个关键字修饰 ,但必须给常量赋初值。 (2) 接口中的方法均为public,在实现接口类中,实现方法必须可public关键字。 (3) 如果使用public来修饰接口,则接口必须与文件名相同。 8、 多重继承 (1) 一个类继承了一个类和接口,那么必须将类写在前面,接口写在后面,接口之间用逗 号分隔。 (2) 接口之间可多重继承,注意使用关键字extends。 (3) 一个类虽只实现了一个接口,但不仅要实现这个接口的所有方法,还要实现这个接口 继承的接口的方法,接口中的所有方法均须在类中实现。 9、 接口的嵌入 (1) 接口嵌入类中,可以使用private修饰。此时,接口只能在所在的类中实现,其他类不 能访问。 (2) 嵌入接口中的接口一定要为public。 10、类的嵌入 (1) 类可以嵌入另一个类中,但不能嵌入接口中。 (2) 在静态方法或其他方法中,不能直接创建内部类对象,需通过手段来取得。 手段有两种: class A { class B {} B getB() { B b = new B(); return b; } } static void m() { A a = new A(); A.B ab = a.getB(); // 或者是 A.B ab = a.new B(); } (3) 一个类继承了另一个类的内部类,因为超类是内部类,而内部类的构造方法不能自动 被调用,这样就需要在子类的构造方法中明确的调用超类的构造方法。 接上例: class C extends A.B { C() { new A().super(); // 这一句就实现了对内部类构造方法的调用。 } } 构造方法也可这样写: C(A a) { a.super(); } // 使用这个构造方法创建对象,要写成C c = new C(a); a是A的对象。 11、异常类 JAVA中除了RunTimeException 类,其他异常均须捕获或抛出。 JAVA之各类修饰子 1. 顶级类的修饰子: 默认 ; public ; final ; abstract . 默认时,称为frends的,不能跨包访问. 2. 顶级接口的修饰子: 默认 ; public ; abstract . 默认时, 称为frends的,不能跨包访问 3. 嵌套类的修饰子: //////////////默认; final ; abstract . static   嵌套在类中的类: 在方法内的类: 不在方法中的类: 嵌套在接口中的类:不能嵌套。 4 . 嵌套接口的修饰子: /////////// 默认; abstract   嵌套在类中的接口: 在方法内的接口: 不在方法中的接口: 嵌套在接口中的接口: 注意: 内部类和匿名类区分 5. 成员变量的修饰子: public ; protected ; 默认; private; static ; final ; transient ; volatile 6. 方法的修饰子: public ; protected ; 默认; private; static ; final ; abstract; synchronized abstract说明: …… 注意: final 和 abstract 任何时候不能同时使用. 其实接口和类很相似,都是不能为private和protected 但是都有例外的时候,就是inner class和inner interface class A{ protectedinterface B {void f();}} class B{ protectedclass C {}}interface默认是friendly 想变成public的时候才加public 那就是说friendly也可以了,可为什么protected就不行呢? 1.如果一个顶级类或顶级接口定义为PUBLIC时类名必须和类名相同,如果是默认或其他时的可以不相同。 2.一个文件里只能有一个PUBLIC的类和接口 public接口确实要和文件同名,没错 但是只用main()所在的类可以定义为public好象不怎么对吧 看下面的代码 publicclass A{ publicstaticvoid f() {System.out.println("This is A");}}class B{ publicstaticvoid main(String args[]) {A.f();}}可以编译执行 (编译是能通过,不过运行不了的,运行显示有异常没主方法)这句话是不对的巴 运行结果: This is A public class S { public static void f() { System.out.println("This is A"); } public void ff() { System.out.println("This is A"); } } class B { public static void main(String args[]) { S.f(); } public void bb() { } } public class Z { public void get(){ S a = new S(); B b = new B(); a.ff(); b.bb(); } } 2. class S { public static void f() { System.out.println("This is A"); } public void ff() { System.out.println("This is A"); } } class B { public static void main(String args[]) { S.f(); } public void bb() { } } 在IDE中是可以的。在JDK命令行中没有试验。 4. interface Z{ final int i=0; static int ii=0; public final static int iii=0; } class B implements Z{ public static void main(String args[]) { B b=new B(); int a=b.i; int aa=B.i; int aaa=B.ii; int aaaa=B.iii; } public void bb() { } } 接口中的方法是抽象的不能用{ } 要用分号结束(public void get();) public class Demo { public void get()throws IOException, SQLException{ System.out.println("Demo"); } } abstract class m extends Demo{ //覆盖了父类的方法,并且抽象化了这个方法。也是可以的 public abstract void get();//默认是顶层Exception异常 } class mm extends Demo{ public void get()throws SQLException{} }
分享到:
评论

相关推荐

    最新Java面试八股文10万字总结

    总之,这份"最新Java面试八股文10万字总结"涵盖了从基础到高级的Java技术知识点,通过深入学习并实践,你将能够在Java求职面试中展现出扎实的技术功底。而"111.txt"可能是补充资料或习题集,可结合PDF文档一同学习,...

    java基础题面试大全

    【Java基础面试题详解】 Java 是一种广泛应用的面向对象的编程语言,对于任何Java开发者来说,掌握基础是非常关键...熟练掌握这些基础知识对于Java开发者来说至关重要,尤其是在面试过程中能够展现出扎实的技术功底。

    java软件工程师基础

    Java软件工程师基础知识是每个开发人员必须掌握的核心技能。在面试中,这些基础知识的掌握程度往往决定了应聘者是否能脱颖而出。以下是一些关于Java基础的重要知识点的详细解释: 1. **访问修饰符的区别**: - `...

    Java程序员面试笔试陷阱题

    Java程序员在面试和笔试过程中经常会遇到一些看似简单实则...理解和掌握这些基础知识对于成为一名合格的Java程序员至关重要。在面试和笔试中,对这些概念的清晰理解可以帮助开发者避免落入陷阱,展现出扎实的编程功底。

    java博客笔记源码

    以上就是Java博客笔记源码中可能涉及的章节内容,通过学习这些基础知识,开发者可以构建扎实的Java编程功底,为进一步的进阶学习打下坚实的基础。每个章节的源代码都是实践这些理论的最佳实践,通过阅读和运行代码,...

    JAVA 面试题总览(书签完整版).zip_java_java 面试_things

    面试中可能会遇到的问题有:如何设计类和对象、接口与抽象类的区别、访问修饰符的作用、以及重写(Override)和重载(Overload)的区别。 接下来,Java集合框架是面试中经常讨论的话题。这包括ArrayList、...

    程序员面试+JAVA技术方面+基础技术知识

    【Java技术面试基础知识点】 Java面试对于程序员来说至关重要,它能评估候选人的技术水平和实际问题解决能力。...掌握这些基础知识将有助于在Java面试中展示扎实的技术功底,同时也为实际开发工作打下坚实基础。

    java面试笔试基础题

    3. **类与对象**:掌握如何定义类,创建对象,以及使用构造函数、访问修饰符、包、访问权限是基础面试题的常见内容。 4. **面向对象特性**:深入理解继承、多态和封装,能够解释其在实际代码中的应用。例如,多态性...

    Java面试宝典.pdf

    书中还涉及了数值运算、代码审查、访问修饰符的差异、重载与覆盖的概念等。例如,`Math.round()`函数会四舍五入到最接近的整数,`Overload`允许方法有相同的名称但参数列表不同,而`Override`则要求子类方法与父类...

    BAT——Java面试宝典Beta5.0

    总结而言,《BAT——Java面试宝典Beta5.0》旨在帮助求职者全面掌握Java基础知识,理解面向对象设计原则,熟悉核心语法,并具备解决实际问题的能力,从而在竞争激烈的互联网公司面试中脱颖而出。通过深入学习和实践...

    java面试之吸星大法

    首先,我们来讨论Java中的访问修饰符,即作用域。它们决定了类、方法和变量在代码中的可见性: 1. **public**:公共访问修饰符,表示该成员对所有类都是可见的,无论这些类是否在同一个包内。如果一个类、方法或...

    java程序员面试面试题

    这包括但不限于变量声明、数据类型(如基本类型和引用类型)、运算符、控制流(如if语句、for循环、while循环)、异常处理(try-catch-finally)、类与对象(封装、继承、多态)、接口、访问修饰符(public、private...

    中海博舟(Java开发工程师)Java笔试题

    【标题】"中海博舟(Java开发工程师)Java笔试题"主要涵盖了Java编程语言的基础与进阶知识,是针对Java开发工程师岗位的一次技术测试。这类笔试题旨在评估候选人在Java开发领域的理论理解、实践经验和问题解决能力。...

    JAVA面试大全

    在Java面试中,面试官通常会考察求职者对于基础知识、数据结构与算法、多线程、集合框架、网络编程、异常处理、JVM原理、设计模式以及最新的技术趋势等方面的知识。下面我们将深入探讨这些关键知识点。 1. **基础...

    java面试题80页超全面

    对于面向对象编程,理解类的构造器、访问修饰符以及方法重载和重写是基础。同时,还要掌握Java中的异常处理机制,了解如何抛出、捕获和处理异常。 JavaSE(Java Standard Edition)是Java的基础平台,主要关注桌面...

    JAVA试题大全

    这个资源涵盖了Java的基础知识、进阶概念以及实际应用,对于提升Java技能水平和应对各种技术面试具有很高的参考价值。 一、Java基础知识 1. 类与对象:理解面向对象编程的基本概念,如类的定义、对象的创建与销毁。...

    JAVA面试题及知识点整理

    2. **访问控制修饰符**:public、private、protected和包访问权限。public成员在任何地方都可以访问,private只在本类内可见,protected在本类和子类以及同一包内可见,包访问权限则仅限于同一包内的类访问。 3. **...

    面试用Java基础方面问题以及答案

    Java 基础是每一位Java开发者都需要扎实掌握的知识点,特别是在面试中,这些基础知识往往会成为检验候选人技术功底的关键。以下是一些关于Java基础的重要知识点的详细解释: 1. **作用域**:Java中的访问修饰符包括...

    全套java面试题

    掌握如何创建类、实例化对象以及使用访问修饰符。 3. **异常处理**:熟悉try-catch-finally语句块,理解不同类型的异常以及如何自定义异常。 4. **集合框架**:熟练使用ArrayList、LinkedList、HashSet、HashMap等...

    JAVA程序员面试宝典++第4版

    本书首先介绍了Java语言的基础知识,包括语法、数据类型、流程控制、异常处理等,这些都是面试中必不可少的基本功。对于面向对象编程,书中详细讲解了类、对象、继承、多态等核心概念,以及接口、抽象类和访问修饰符...

Global site tag (gtag.js) - Google Analytics