OOP是面向对象编程的英文全称(Object Oriented Programming)的英文的首字母,它表示的是一种计算机编程架构。关于面试中OOP的提问可以从其核心思想封装,继承,多态三方面展开,具体如下:
成都创新互联公司网站建设公司一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!专注中小微企业官网定制,网站设计制作、成都做网站,塑造企业网络形象打造互联网企业效应。
1.OOP之封装,封装主要是保证组件不会以不可预期的方式改变其他组件的内部状态,而只有在那些提供了内部状态改变方法的组件中得情况下,才可以访问其内部状态。
2.抽象完一个事物后,可能在特定的条件下,其本身的状态需要改变,但是这个改变并允许其他的事物来进行,这样的改变只允许这个事物认同的操作域来进行,可以是该事物本身,也可以是它信任的其他事物。这样我们就能对我们抽象完的每个事物进行自身数据的保护。
3.OOP之继承,继承指的是从已有类得到继承信息创建新类的过程。让抽象出来的事物具有本应该具有的联系。允许在现存的组件基础上创建子类组件,这统一和增强了另外两个特性——多态性和封装性。
4.一般来说就是用类来对组件进行分组,并且还可以定义新类为现存的类的扩展,这样则可将类组织成树形或网状结构,这体现了动作的通用性。
5.OOP之多态,从定义上来说,多态指的是组件的引用和类集会涉及到其它许多不同类型的组件,而且引用组件所产生的结果得依据实际调用的类型。
6.在实际应用体现为用一种解决方案来解决对一类问题,对于不同的事物解决途径和结果不同。在C++中实现多态性有三种方法,分别是:虚函数,函数重载和运算符重载。
扩展资料:
OOP相对于面向过程编程的优点:
(1)OOP关注对象和角色,也就是事物的本质。
(2)OOP把客观世界中的对象抽象成对应的类; 2)通过类构造实例; 3)通过依赖、继承、实现等形式建立对象间的通信关系。
(3)OOP易于扩展,增加或改变业务的功能,无需大幅改动改变源代码。
(4)OOP易于建模,OOP就是软件架构师在计算机高级语言中对客观世界的抽象和再现,人们可以很好地理解和建立起计算机中的抽象模型。
参考资料来源:百度百科-OOP
OOP是面向对象编程,特征分别是封装、继承、多态。
封装:封装是指将对象信息状态通过访问权限修饰符隐藏在对象内部,不允许外部程序直接访问,如果外部程序要访问对象内部,可以调用内部提供的get或set方法。
继承:子类继承了父类所有的成员方法和属性,并且可以拥有自己特性。继承解决了代码的重用问题
多态:方法重写和重载
方法重写:
1参数列表必须完全与被重写的方法相同
2返回的类型必须一直与被重写的方法的返回类型相同
3. 访问修饰符的限制一定要大于被重写方法的访问修饰符
4. 重写方法一定不能抛出新的检查异常或者比被重写方法更加宽泛的检查型异常
5. 存在于父类和子类之间,方法被定义为final不能被重写。
方法重载:多个同名函数同时存在,具有不同的参数个数/类型,返回值类型可以相同可以不同,调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性,存在于父类和子类、同类中.
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = "";
while(true) {
System.out.println("请输入一个字符:");
str = sc.nextLine();
if(str=="exit") // 如果字符串为"exit",退出循环
break;
if(str.length()==1) {
char c = str.charAt(0);
System.out.println("它对应的ASCII码为:" + (int)c); //(int)c将c强制转换为它的ascii码
}
else
System.out.println("请输入一位字符。");
}
sc.close();
}
}
具体代码如下:
class Pet {
public static final String Male = "雄";
public static final String Female = "雌";
// 名称
private String name;
// 年龄
private int age;
// 性别
private String gender;
// 配偶
private Pet partner;
public Pet(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
if (gender != Male gender != Female) {
throw new IllegalArgumentException("无效的参数[gender]。");
}
this.gender = gender;
}
public Pet getPartner() {
return partner;
}
public void setPartner(Pet partner) {
this.partner = partner;
}
// 判断自己是否满足结婚条件
public boolean isMarriageable() {
// 判断自己是否有配偶
if (this.partner != null) {
return false;
}
// 判断己方是否满足结婚年龄
if ((this.gender == Male this.age 5) ||
(this.gender == Female this.age 4)) {
return false;
}
return true;
}
// 判断自己是否可以和 pet 结婚
public boolean isMarriageableWith(Pet pet) {
// 判断自己是否满足结婚条件
if (!this.isMarriageable()) {
return false;
}
// 判断对方是否满足结婚条件
if (!pet.isMarriageable()) {
return false;
}
// 判断双方是否为同性
if (this.gender.equals(pet.getGender())) {
return false;
}
return true;
}
// 结婚方法
public void marry(Pet partner) {
// 把对方设置为自己的配偶
this.setPartner(partner);
// 把自己设置为对方的配偶
partner.setPartner(this);
}
}
public class Homework4 {
public static void main(String[] args) {
Pet p1 = new Pet("小花猫", 5, Pet.Male);
Pet p2 = new Pet("小黑猫", 4, Pet.Female);
// 判断小花猫是否可以和小黑猫结婚
boolean result = p1.isMarriageableWith(p2);
System.out.println(result ? "小花猫和小黑猫可以结婚" : "小花猫和小黑猫不可以结婚");
// 小花猫和小黑猫结婚
p1.marry(p2);
Pet p3 = new Pet("小白猫", 4, Pet.Female);
// 判断小白猫是否可以和小花猫结婚,小黑猫已经有配偶了不能结婚
result = p3.isMarriageableWith(p1);
System.out.println(result ? "小白猫和小花猫可以结婚" : "小白猫和小花猫不可以结婚");
}
}
/**
* Instrument 乐器
* @Created on 2011-4-21 下午04:57:50
*/
public interface Instrument {
/**
* 弹奏
* @Created or Updated on 2011-4-21 下午04:59:51
*/
void play();
} /**
* Piano
* @Created on 2011-4-21 下午04:59:04
*/
public class Piano implements Instrument {
public void play() {
// TODO Auto-generated method stub
System.out.println("钢琴在弹奏");
}
} /**
* Violin
* @Created on 2011-4-21 下午05:00:27
*/
public class Violin implements Instrument {
@Override
public void play() {
System.out.println("小提琴在弹奏");
}
}
public class Test { public static void main(String[] args) {
testPlay();
}
static void testPlay(){
//钢琴
Instrument piano=new Piano();
Instrument violin=new Violin();
//分别弹奏
piano.play();
violin.play();
}
}
OOP就是面向对象编程 把所有东西都看成对象 比如 人 就是一个对象
对象有属性 和方法
属性 用来表示对象的状态/数据 (现实对象的名词/形容词)
人 的属性 姓名 年龄 性别 种族 身高 体重 等等。。
方法 用来表示对象的行为/提供的服务 (现实对象的动词)
人 的方法 吃 喝 拉 撒 睡 说 走 等等
多态 同样的方法 对不同的对象 有不同的处理
婴儿 是 人 的子类 有 吃 方法 但 人 可以嚼 婴儿 不能嚼
人 有 拿 方法 对锤子 和 鸡蛋 的处理不同 一个用力大 一个用力小
接口 就是一组方法的定义
食物接口 必须有 补充能量 方法
交通工具接口 必须有 移动 方法
通讯工具接口 必须有 接收信息 发送信息 方法
给你推荐本书 Beginning Java Objects 我看这本书之前看的书大多讲的都是java的如何编写代码 对概念讲的不细 这本书专门讲概念 思维方式