当前位置: 首页 > 图灵资讯 > 技术篇> 谈谈你对面向对象的理解

谈谈你对面向对象的理解

来源:图灵教育
时间:2023-09-05 11:55:06

Java中如何理解多态?

Java 父类私有属性子类会继承吗? (qq.com)

继承与隐藏:Java中父类成员变量的神秘禁忌 (qq.com)

面向对象是一种编程思想和方法。他将现实世界中的事物抽象成对象,并通过对象之间的互动实现程序的设计和开发。

与专注于解决问题的过程不同,面向对象编程的重点是通过封装、继承和多态化来组织和管理对象的行为和状态。

包装:将数据和数据操作包装在一个对象中,对象暴露有限的接口,隐藏内部细节,提高代码的可维护性和可重用性

继承:通过继承,一个类可以从另一个类衍生出来,继承父类的属性,并且可以添加和修改自己的特征。继承提供了代码重用和扩展的机制

多态:多态允许使用统一的接口处理不同类型的对象,并通过方法重写(Override)和重载(Overload),实现对象对同一消息的响应,提高代码的灵活性和可扩展性。

问:Java是如何实现静态多态和动态多态的?

静态多态(静态绑定,编译时多态)是通过函数重载实现的,在编译时已经确定了静态多态的调用方法,不能再运行时也会发生变化。

public static void print(String message){}public static void print(int number){} 

动态多态(动态绑定,运行时多态)是通过函数重写和动态绑定实现的,即子类可以重写父类的方法,并根据实际对象类型调用相应的方法。动态多态允许统一的调用方法来显示不同的行为。

// Cat extends Animal, Dog extends AnimalAnimal animal1 = new Cat();Animal animal2 = new Dog();animal1.makeSound();    // Cat meowsanimal2.makeSound();    // Dog barks
追问:继承的子类如何访问父类成员?

关键字super可以调用父类的构造函数,访问父类的属性和方法。

问:子类能访问父类的私有属性吗?

子类不能直接访问父类的私有属性,但可以通过调用父类提供的getter和setter来间接访问和修改父类的成员变量,同时保持代码的清晰度和可维护性。

追问:继承与SOLID设计原则中的哪些要点有关?

单一职责原则 (Single Responsibility Principle, SRP):一个类别应该只有一个原因导致它的变化。换句话说,一个类别应该只有一个责任。

开放封闭原则 (Open-Closed Principle, OCP):软件实体(类别、模块、函数等)应对扩展开放并关闭修改。这意味着在添加新功能时,不应更改现有代码,而应通过扩展现有代码来实现新功能。

依靠倒置原则 (Dependency Inversion Principle, DIP):高层模块不应该依赖于低层模块,两者都应该依赖于抽象。这意味着依赖应该基于抽象或接口,而不是具体的实现。