当前位置: 首页 > news >正文

南宁市网站建设公司给人做网站网站

南宁市网站建设公司,给人做网站网站,如何做大型网站,工商局官网查询营业执照Java 类与对象篇 1.上期面试题解析#xff1a; 上文链接#xff1a;https://blog.csdn.net/weixin_73492487/article/details/146607026 创建对象时的内存分配过程#xff1f; ① 加载类 ② 堆内存分配空间 ③ 默认初始化 ④ 显式初始化 ⑤ 构造器执行 this和super能否同时…Java 类与对象篇 1.上期面试题解析 上文链接https://blog.csdn.net/weixin_73492487/article/details/146607026 创建对象时的内存分配过程 ① 加载类 ② 堆内存分配空间 ③ 默认初始化 ④ 显式初始化 ⑤ 构造器执行 this和super能否同时出现 不能二者都必须位于构造器首行 以下代码输出什么class A {int i 10;void print() { System.out.println(i); } }class B extends A {int i 20;public static void main(String[] args) {new B().print(); } }输出10方法看运行时类型字段看编译时类型 方法看运行时类型在 Java 中方法的调用是动态绑定的这意味着方法的调用是基于实际对象的类型来决定的而不是对象的声明类型。 字段看编译时类型而字段的访问是静态绑定的即编译时绑定。即使对象的实际类型发生了变化编译时类型决定了我们访问的是哪个字段。也就是说字段的访问与对象的声明类型相关而与实际类型无关不受运行时类型影响。 2.多态Polymorphism 2.1 实现条件 继承体系存在父子类关系方法重写子类重写父类方法向上转型父类引用指向子类对象向上转型低转高自动转换Animal animal new Dog(); // 向上转型2.2 动态绑定机制 class Animal {void sound() { System.out.println(Animal sound); } }class Dog extends Animal {Overridevoid sound() { System.out.println(Woof!); } }public class Test {public static void main(String[] args) {Animal a new Dog();a.sound(); // 输出Woof!运行时类型决定方法调用} }核心特性 编译看左边检查父类是否存在该方法声明/引用决定可以调用的方法若不存在该方法则编译错误运行看右边实际执行子类重写方法引用指向的对象具体决定调用的方法成员变量无多态编译运行都看左边 3. instanceof 与类型转换 3.1 类型检查 Object obj new String(Hello); if(obj instanceof String) { // 返回trueSystem.out.println(是字符串类型); }分析instanceof 用于判断一个对象是否是某个类的实例或者是否实现了某个接口并且返回一个布尔值 2.2 类型转换规则 转换类型语法风险向上转型自动转换无风险向下转型强制转换 类型检查可能抛出ClassCastException 分析在进行类型转换之前可以使用 instanceof 来判断是否可以安全地进行转换从而避免 ClassCastException。 安全转换模式 if(animal instanceof Dog) {Dog dog (Dog)animal; // 安全转换 }父类与子类间的类型转换 //父类Animal class Animal {public void eat() {System.out.println(Animal is eating);} }//子类Dog继承了父类的eat方法 class Dog extends Animal {public void bark() {System.out.println(Dog is barking);} }public class Test {public static void main(String[] args) {//一个对象的实际类型是确定的但可以指向的引用类型就不确定了//父类引用指向了子类Animal animal new Dog();animal.eat(); // 可以调用 Animal 类中的方法// animal.bark(); // 编译错误Animal 类型没有 bark 方法if (animal instanceof Dog) {Dog dog (Dog) animal; // 强制类型转换dog.bark(); // 可以调用 Dog 类中的 bark 方法}} } 4. static 关键字详解 4.1 静态成员 vs 实例成员 维度静态成员实例成员所属层级类级别对象级别内存分配类加载时初始化对象创建时分配访问方式类名.成员 或 对象.成员必须通过对象访问生命周期与类共存亡随对象回收而销毁线程安全需额外同步控制实例隔离更安全 4.2 静态代码块与初始化顺序 class MyClass {static int staticVar; //静态变量int instanceVar;// 静态代码块类加载时执行一次只执行一次static {staticVar 100;System.out.println(静态代码块);}// 实例代码块每次new对象时执行用于赋初始值{instanceVar 50;System.out.println(实例代码块);}public MyClass(){System.out.println(构造方法);} }public class Test{public static void main(String[] args){MyClass mcnew MyClass();System.out.println();MyClass msnew MyClass();} }初始化顺序 静态变量/代码块 → 实例变量/代码块 → 构造器 输出 静态代码块 实例代码块 构造方法 实例代码块 构造方法 4.3 static修饰特性 静态变量 静态变量被所有实例共享静态变量在内存中只有一份副本静态变量的生命周期与类的生命周期相同即在类加载时分配内存直到程序结束时才释放从属于类 静态方法 静态方法只能访问静态变量和调用其他静态方法可以通过类名直接调用且不能直接访问实例变量和实例方法不能使用this/super关键字不能被重写但可隐藏 class Parent {static void staticMethod() {System.out.println(Parent static method);} }class Child extends Parent {//与父类方法相独立static void staticMethod() {System.out.println(Child static method);} }public class Test {public static void main(String[] args) {Parent p new Parent();Parent c new Child();Child d new Child();p.staticMethod(); // 输出 Parent static methodc.staticMethod(); // 输出 Parent static method (静态方法调用是根据引用类型来决定的)d.staticMethod(); // 输出 Child static method (静态方法调用是根据引用类型来决定的)//静态方法是属于类的而不是对象的。所以当你调用静态方法时它是通过类名来解析的而不是通过对象引用来解析//当子类定义了一个与父类中静态方法相同的方法时,在子类中的静态方法不会被真正地“重写”父类和子类的静态方法仍然是相互独立的。} } 静态代码块 静态代码块在类加载时自动执行且只执行一次。通常用于静态变量的初始化。 静态导入 使用 import static 语句导入类的静态成员可以直接访问类的静态方法或静态变量。 import static java.lang.Math.*;public class Test {public static void main(String[] args) {double result sqrt(25); // 直接使用 Math 类中的 sqrt 方法无需写类名Math.sqrt())System.out.println(result); // 输出 5.0} } 静态内部类(由 static 修饰的内部类) 静态内部类不依赖外部类的实例可以直接创建可以访问外部类的静态成员但不能访问外部类的实例成员和实例方法 class Outer {static int staticVar 10;int var; //静态内部类不可访问//由static修饰的内部类静态内部类static class Inner {void display() {System.out.println(Static Inner class, staticVar: staticVar);}} }public class Test {public static void main(String[] args) {Outer.Inner inner new Outer.Inner(); // 直接通过外部类创建静态内部类的实例inner.display(); } } 输出 Static Inner class, staticVar: 10 5. 抽象类Abstract Class 5.1 定义与特征 abstract class Animal {// 抽象方法abstract void sound();// 非抽象方法/具体方法子类会继承void sleep() {System.out.println(Sleeping...);} }class Dog extends Animal {// 实现抽象方法Overridevoid sound() {System.out.println(Bark);} }public class Test {public static void main(String[] args) {Animal animal new Dog();animal.sound(); // 输出 Barkanimal.sleep(); // 输出 Sleeping...} } 定义 抽象类是一种不能直接实例化的类。它可以包含抽象方法和非抽象方法。抽象方法是没有实现的方法只有方法的声明没有方法体子类需要实现这些抽象方法。抽象类通常用于定义一种通用的模板或接口子类继承它并提供具体的实现。 核心特性 用abstract关键字修饰不能实例化只能被继承可以包含抽象方法和具体方法抽象方法必须在抽象类中 抽象方法没有方法体必须在子类中实现。非抽象方法有方法体子类可以继承并使用也可以覆盖重写 子类必须实现重写所有抽象方法除非子类也是抽象类那么就需要子类的子类去实现这些抽象方法可以包含构造方法抽象类可以有构造方法子类通过super()调用父类的构造方法。可以包含成员变量任意访问修饰符 abstract class Shape {//成员变量int x, y;// 抽象类的构造方法初始化共同的属性public Shape(int x, int y) {this.x x;this.y y;}//抽象方法必须实现abstract void draw(); }class Circle extends Shape {int radius;public Circle(int x, int y, int radius) {super(x, y); // 调用父类构造方法this.radius radius;}Overridevoid draw() {System.out.println(Drawing a circle at ( x , y ) with radius radius);} }public class Test {public static void main(String[] args) {Circle circle new Circle(5, 10, 7);circle.draw(); // 输出: Drawing a circle at (5, 10) with radius 7} } 5.2 使用场景 代码复用多个子类共享部分实现模板方法模式定义算法框架具体步骤由子类实现强制规范要求子类必须实现特定功能 6. 接口Interface 6.1 定义与演进 // Java 8 接口是一种约束只有抽象方法 public interface Flyable {// 常量默认 public static finaldouble MAX_SPEED 1000.0;// 抽象方法默认 public abstractvoid fly();// 默认方法Java 8默认方法有方法体可以提供默认实现。//默认方法是 可选 的接口的实现类可以选择覆盖它也可以使用接口提供的默认实现。default void land() {System.out.println(Landing...);}// 静态方法Java 8可以通过接口直接调用而不需要依赖于接口的实现类。//静态方法 不能被实现类重写因为它属于接口本身。static void showMaxSpeed() {System.out.println(Max speed: MAX_SPEED);}// 私有方法Java 9只能在接口内部使用不能被接口的实现类直接访问。private void checkSpeed() {// 内部复用代码} }定义 接口是一个抽象类型它是类与类之间的一种协议用来指定类必须实现的方法。接口只包含 抽象方法没有方法体和 常量从 Java 8 开始接口也可以包含 默认方法有实现和 静态方法。 核心特性 不能直接实例化 你不能创建接口的对象必须通过实现接口的类来实例化对象没有构造方法 接口没有构造方法因此不能创建接口实例implements实现支持多继承、多实现一个类可实现多个接口所有方法默认public abstractJava 8前变量默认public static finalJava 8 支持默认方法和静态方法Java 9 支持私有方法 示例 interface Logger {private void log(String message) {System.out.println(Logging message: message);}default void info(String message) {log(message); // 接口调用自身私有方法}default void warn(String message) {log(message); // 接口调用自身私有方法} }class MyLogger implements Logger {// 不需要实现 log() 方法只需要调用 info() 或 warn() 方法来提示登陆信息 }public class Test {public static void main(String[] args) {MyLogger logger new MyLogger();logger.info(Info message);logger.warn(Warning message);// 输出:// Logging message: Info message// Logging message: Warning message} } 6.2 使用场景 多继承行为定义多个能力Flyable, Runnable等策略模式通过不同实现类改变算法API定义解耦接口与实现面向接口编程函数式接口FunctionalInterfaceLambda表达式基础 7. 抽象类 vs 接口对比 维度抽象类接口Java 8实例化不能不能方法实现可包含具体方法默认方法/静态方法/私有方法成员变量任意类型和修饰符只能是public static final常量继承/实现单继承extends多实现implements构造器有无设计目的代码复用 规范约束行为规范定义访问控制支持各种访问修饰符默认publicJava 9支持private ⚡ 高频面试题 以下代码输出什么 class A {static { System.out.print(1); }{ System.out.print(2); }public A() { System.out.print(3); } }class B extends A {static { System.out.print(4); }{ System.out.print(5); }public B() { System.out.print(6); } }public class Test {public static void main(String[] args) {new B(); } }静态方法能否调用非静态方法为什么 如何实现线程安全的单例模式 以下代码是否合法 class Test {static int a b; static int b 10; }何时选择抽象类何时选择接口 以下代码是否合法为什么 abstract class A {abstract void method1();final void method2() {} }interface B {default void method3() {}static void method4() {} }
http://www.pierceye.com/news/813534/

相关文章:

  • 怎么查网站的备案号网站页面设计需求
  • 手机网站怎么做的好网页设计参考书籍
  • 网站建设和网络推广方案网站建设技术可行性分析
  • 免费建站网站自助建站的网站建站淘宝网站开始怎么做的
  • 旅游电网站建设目标公司注册成本
  • 建设婚恋网站基本功能有哪些毕业设计网页
  • 广州贸易网站杭州关键词推广优化方案
  • 怎么注册自己的网站wordpress静态设置
  • 网站收录有什么好处仿糗事百科wordpress
  • 面试网站建设工程师鞍山市城市建设管理局网站
  • 电商网站建设与管理柳州网站建设多少钱
  • 网站的访问量统计怎么做企业网站建设基本标准
  • 网站开发服务属于什么行业先做网站再备案吗
  • 做零售去哪个外贸网站专业做网站较好的公司
  • 网站运营职业分析2233网页游戏大全
  • 深圳网站制作880网站建设课设总结
  • 瑶海区网站建设公司中铁建设集团有限公司基础设施事业部
  • wordpress 用js网站备案 seo
  • 网站一级域名和二级域名区别自己怎么做外贸英文网站
  • 南京网站定制南京wordpress安装提示500错误
  • 网站图片优化免费网站建设凡科
  • 网站开发项目团队网页设计图片与文字的研究
  • 百度网站建设策划书范文做暧在线网站
  • 松江新城做网站公司国产成年做视频网站
  • 杭州网站推广服务网站单页面怎么做
  • 房地产网站建设案例wordpress 判断移动端
  • 网站开发过程文档网站代码需要注意什么问题
  • 怎么选一个适合自己的网站wordpress怎么修改后台登录地址
  • 网页制作与网站建设自考西安千秋网络科技有限公司
  • 建设网站的费用入什么科目永久免费google搜索引擎