面向过程和面向对象有什么区别?
面向过程的核心是函数,以功能为中心,实现了函数级别的代码重用。
面向对象的核心是封装了属性和方法(行为)的类,以数据为中心,实现了类级别的代码重用。
面向对象因为采用了类,所以具有封装、继承和多态特性,提高了代码重用性、可维护性和扩展性,适合大型项目的开发。
类和对象的区别:
类是对某一类事物的描述,是抽象的概念上的定义(一类事物),类具有自己的属性和行为
对象是实际存在的,具体事物的个体(一类实物详细的某一个)
关系:好比模具和用模具制作出的关系,一个类可以有多个对象
权限符的区别:
public:项目下所有的类文件都可以访问:项目可见性(权限最大)
protect:同一个包中都可用,protect可让子类访问
默认:什么都不写,再同一个包中可用,不写修饰符
private:权限只在自己的类中可见,其他不可用(另一个类中新建对象也不行)
final:final修饰的属性值是不可更改的
static:用它修饰的成员变量或方法可直接使用类名,静态方法中调用不能用super和this,在方法体里不可定义static变量
构造方法:
构造方法名称和类名相同,没有返回值类型,作用是在创建对象时执行一些初始化操作(完成对象成员的赋值)
方法重载的作用:
属性值已经在 构造方法中固定了,在创建对象时完成不同属性的动态赋值(灵活性强)
方法重载特点:方法名相同,构造方法参数列表不同与返回值类型和修饰符无关。
封装:
封装将属性设为private(私有的)
封装通过private,protect,public和默认权限控制符实现权限的控制,降属性设为private,属性只能在类中可见,在提供public权限的setter/getter实现对属性的读取(存取)在setter方法中对用户的输入的控制范围进行判断(控制用户输入范围)
this:当成员变量和局部变量名相同,必须使用this,列:public void setName(String name){this.name=name;}
总结:
抽有象类中可以有构造方法吗?
解答:抽象类可以有构造方法,
其构造方法可以被本类的其他构造方法调用,
若此构造方法不是由 private 修饰,也可以被其子类中的构造方法调用。
抽象类和抽象方法的特点?
答:(1) 抽象类和抽象方法都通过 abstract 关键字来修饰。
(2) 抽象类不能实例化。抽象类中可以0到多个抽象方法,甚至全部方法都可以
是抽象方法。
(3) 抽象方法只有方法声明,没有方法实现。
有抽象方法的类必须声明为抽象类。
子类必须重写所有的抽象方法才能实例化,否则子类还是一个抽象类。
属性可以是简单变量,也可以是一个对象
面向对象的三大特征 封装、继承、多态
abstract 可以用来修饰类和方法,但不能用来修饰属性和构造方法