面向对象的一些基础概念


转载请标明原文地址:http://www.cnblogs.com/zhangyukof/p/6829538.html 

  随着编程经验的积累,我对编程的理解也不断的发生变化。最开始学的是算法,然后是数据结构,现在开始学习编程思想,这是一个不断进步的过程。编程思想可能是最基础但却是最重要的,以前对这些概念只是照本宣科,并不理解,现在开始重新关注编程思想,有了更多的理解。在这里对个人理解做个总结和记录。

1.所有类的基类是?
对象(Object)。

2.什么是对象?
对象是对客观事物的抽象。

3.什么是类?
类是对象的抽象。

4.对象和类的联系?
类是对象的模版,对象是类的实例。

5.对象和类的区别?
对象占内存,类不占内存。

6.什么是面向对象?
面向对象(Object Oriented)是一种软件开发方法,是一种对客观事物理解和抽象的方法。

7.什么是属性和方法?
属性是用来描述对象特性的数据,方法是数据的变化过程,是可重用的代码段。

8.面向对象的三大基本特性?
(1)封装:把客观事物封装成抽象的类。隐藏对象的属性和实现细节,仅对外公开接口。
(2)继承:子类可以继承父类的属性和方法,提高了代码的重用性和可扩展性。
(3)多态:子类可以向上转型为父类。
实现多态的方法为重写(override)和重载(overload 有些语言不支持重载)。

9.什么是重写和重载?
(1)重写(override):子类可以重写父类非私有的方法。
(2)重载(overload):一个类中可以有多个同名方法,这些方法的参数不能相同。

一个类中可以有多个同名不同参的方法。

10.什么是值类型和引用类型?
(1)值类型:传值。
(2)引用类型:传址。

11.值类型和引用类型的区别?
(1)值类型:一人一份内存。
(2)引用类型:共用一份内存。
打个比方:值类型是私家车,一人一辆,你车坏了你迟到,不影响别人。引用类型是公交车,大家公用一辆,车一坏一车人全迟到。

12.Java中String是值类型还是引用类型?
引用类型。
Java中判断两个字符串相等应该用str1.equals(str2),用==不准确。

 public static void main(String[] args) {
        String str1 = "string";
        String str2 = "string";
        String str3 = new String("string");
        System.out.println(str1 == str2);        //true
        System.out.println(str1 == str3);        //false
        System.out.println(str1.equals(str2));   //true
        System.out.println(str1.equals(str3));   //true
}

13.什么是访问修饰符?Java中的访问修饰符都有哪些?
访问修饰符就是控制类、属性和方法访问权限的符号。
Java中的访问修饰符有四种:private、default(默认的)、protected、public。

作用域当前类同包子类其他
private × × ×
default(不写) × ×
protected ×
public

访问修饰符的权限越向下越高,尽量用private,权限不够再依次提升权限。(多用private少用public)

14.什么是计算机程序?
计算机程序是可以完成某些功能的计算机指令集。
计算机程序由数据结构和算法构成。

什么是数据结构?什么是算法?
数据结构是计算机存储、组织数据的方式。
算法是计算机执行计算过程的具体描述。
好的数据结构和算法会带来更高的运行、存储效率。数据结构往往和高效的检索算法和索引技术有关
通常,计算机程序需要经过编译和链接成为人们难以理解但是计算机理解的格式,然后执行。不需要编译就可以运行的程序称之为脚本程序。