面向过程和面向对象
面向过程:注重过程,代表性语言C语言
面向对象:注重对象,从宏观上把握整件事情,代表性的语言java语言
都是解决问题的思维方式,只不过是考虑问题的角度不同类和对象
类:类是对对象的抽象,模子,图纸
对象:对象是对类的具体描述,月饼,楼房类的成员:成员变量(属性),方法,构造器,代码块,静态代码块,内部类
成员变量:定义在类的内部方法的外部的变量
作用域:整个类
内存:堆内存中
生命周期:对象产生则成员变量产生,对象消亡则成员变量消亡
局部变量:定义在方法的内部的变量
作用域:方法里
内存:栈内存
生命周期:方法调用的时候产生,方法结束则消亡成员变量和静态成员变量:
成员变量归属于对象,而静态成员变量归属于类
成员变量通过对象调用,而静态变量可以通过对象调用,也可以通过类名调用,推荐使用类名调用
成员变量的生命周期随对象的产生而产生,随对象的消亡而消亡;静态变量归属于类,所以只要类存在,那么静态变量就存在
内存:成员变量存放在堆内存,而静态变量存放在方法区方法:
方法的重载、方法的重写
重载:同一个类中,方法名一样,参数列表不一样(参数的个数不一样或参数的类型不一样)
如果两个方法只有返回类型不一样,不构成重载
重写:继承类中出现,方法名一样,形参列表一样
返回类型、异常:子类小于等于父类
修饰符:子类不能比父类更严格(private>default>protected>public)构造器:
new对象的时候自动调用
无参构造器、有参构造器
默认情况下,系统会自动提供一个无参构造器,但是,一旦人为的定义了构造器,那么,系统就不再提供构造器了
如果用private修饰构造器,表示不能在该类外创建对象了代码块,静态代码块:先于构造器调用
代码块{}:一般用于提取多个构造器里的重复代码,归属于对象,用的较少
静态代码块static{}:一般用于对静态属性进行初始化,归属于类,较常用
4.super和this
super:代表父类对象的引用
this:代表当前对象的引用
共同点:
都是对象的引用,都可以调用属性、方法、构造器
在构造器中使用的时候,都必须出现在第一行
在静态方法中都不能使用
在内存中,创建一个对象的时候,里面都有this和super
注意:
this和super不能在构造器中同时使用
5.面向对象的三大特征:
封装:隐藏
好处:安全,简单
private:仅在本类中可见
default:只要是同一个包下,都可见
protected:本类可见,本包可见,其它包下的子类可见
public:同一个项目中可见
属性、方法、构造器:四个都行
类:public和default可以修饰,其它的不行
继承:
好处:减少代码量,代码的复用
可以继承的成员:属性,方法可以被继承,但是构造器不能被继承
public修饰的都可以继承
default修饰的同一个包里的可以继承
protected修饰的不同包也可以继承
private修饰的一定不能继承
多态:
好处:减少代码量,提升扩展性
多态的条件:
继承、重写、父类的引用变量指向子类对象
多态的应用:工厂设计模式
6. static的用法
可以修饰属性、方法
一般来说,static修饰属性的时候表示该属性被多个对象共用,常常跟final配合使用,用来声明常量
public static final double PI = 3.14;
static修饰方法一般用在工具类中,该方法将来可以通过类名来调用,使用较为简单
注意:静态方法中只能调用静态的成员(属性和方法),不能调用非静态的属性,也不能使用this和super
7. final关键字
可以修饰类、属性、方法
修饰类表示该类不允许被继承
修饰属性表示该属性是常量,值不允许改变
修饰方法表示该方法不允许被重写,但是可以被继承来用
不能用final修饰构造器