面向对象有三个特性:
封装、继承、多态
封装
隐藏细节。
对属性进行封装
1、将属性私有化,使用private修饰属性
2、提供属性setter 和 getter方法,方法对外公开访问。
private String name;
public void setterName(String name){
this.name = name;
}
public String getterName(){
return this.name;
}
构造方法
访问修饰符 类名(参数列表){
//构造方法体
}
构造方法在类实例化的时候进行调用。
在Java中,JVM会为每个类隐式构造一个空参空实现的构造方法。
一旦在类自定义任意形式的构造方法,都将覆盖掉隐式构造。
构造方法中一般情况都将类实例化后必须要获取的数据写在构造方法内。
如果实例化的对象具备带参构造,则在实例化时必须传入指定顺序的类型的参数。
注意点:
属性和方法也是对象,属性类型实例化成为Field类型,方法实例化成为Method类型。
类在实例化之前会将该类中所有属性和方法先进行实例化,然后通过构造方法对其类本身进行实例化。
Java中常见的设计模式
单例模式、工厂模式、观察者模式、代理模式......
私有构造将导致类无法实例化。
static 静态修饰符:使用static修饰的属性或者方法将常驻内存。
static修饰的属性或方法不需要对类进行 实例化就可以直接访问。使用类名.静态方法(属性),因此静态方法也被称为类方法,静态属性又称为类属性。而没有使用static修饰的方法称为实例方法。
使用static的场合:
1、当方法需要频繁调用时
2、当数据需要全局共享时,需要跨类访问数据时。
静态方法中访问类的属性,该属性必须是静态属性。
重载的作用:对方法名进行复用。
使用条件:同一个类中,方法名相同,参数列表不同,成为方法的重载。
重载的多个方法之间没有任何的业务关联,彼此独立。
继承:是面向对象的重要机制,指一个对象可以直接调用另一个对象的属性和方法。
被继承的类称为父类、超类、基类
继承父类的类称为子类、派生类
通俗的话来讲:继承就是子类能够获取父类中所有属性和方法
子类可以通过方法的重写来表现得更具体
使用继承的目的:
1、实现类的继承,可以复用类的所有属性和方法
2、继承可以更好的实现类的扩展
3、实现多态性
使用继承注意点:
1、单继承模式,一个子类只能拥有一个父类(可以使用多继承的方式继承多个类的属性)
2、子类应该比父类要更具体(1、拥有更多属性 2、拥有更多方法 3、方法的重写)
子类在实例化完成之前会对父类进行实例化
super 用来表示对父类实例的引用,该关键字只能在子类内部使用。
如果子类实例化的时候,父类中没有无参构造,则必须手动调用父类的带参构造方法且必须写在子类构造的第一句;换而言之,JVM只会对父类的无参构造进行自动调用。
方法的重写:重写只在子类、实现类中存在,表示对父类同名方法的一次覆盖,重写要求方法的返回值类型、方法名、参数列表都必须相同,且访问级别不低于父类方法的访问级别。
Java中所有类的父类是Object,任何一个Java类都派生自Object对象。