一、面向对象设计
1.方法的重载
一个类中可以包含多个同名的方法,但是需要的形式参数不一样(形式参数就是定义方法需要的参数,实际参数就是传入的参数)
方法的返回类型,可以相同,可以不同,但是仅仅返回类型不同,是不允许的。
int a(int i) {return i;}
int a(double i) { return i};
2.静态变量和静态方法
类具有的属性。
为所有对象共享的内容。通过使用static关键字来声明一个变量或者一个方法为静态的,一旦声明为静态,那么通过这个类创建的所有对象,操作的都是同一个目标。对象再多,也只有这一个静态的变量或方法。
所有被标记为静态的内容,会在类刚加载的时候就分配,而不是在对象创建的时候分配,所以说静态内容一定会在第一个对象初始化之前完成加载。
3.封装
封装是为了保证变量的安全性,不必在意具体实现细节,只是通过外部接口就可访问类的成员
在编写类时,将成员变量私有化,外部类需要getter和setter方法查看和设置变量。
4.继承
在定义不同类的时候存在一些相同的属性,为了方便使用可以将这些属性抽象成一个父类,在定义其他子类的时候可以继承该父类,减少代码重复定义。子类可以使用父类中非私有成员。
子类具有父类的全部属性,同时子类还能有自己的方法。只能继承一个父类,不能多继承。
每一个子类都必须定义一个实现父类构造方法的构造方法,需要在构造方法开始使用super(),super必须在首行。如果父类使用默认构造方法(无参构造),则子类不需要手动声明。
所有类都继承object类 object是所有类的父类。
5.多态
多态是同一个行为具有多个表现不同形式或形态的能力。也就是同样的方法,由于实现类的不同,导致执行结果不同。
(1)方法的重写
重载:原有逻辑不变的情况下,支持更多参数的实现。
重写:直接覆盖原有的方法。
再次定义同样的方法,父类的方法就会被覆盖。不仅想使用自己子类的逻辑,还想调用父类的逻辑,使用父类的方法,调用父类的成员变量。那就使用 super.方法();
方法访问中的优先级:形参 > 当前类的成员变量 > 父类的成员变量
静态方法不能被重写,因为在类中,静态方法是属于当前类的方法。
instanceof关键字 :进行类型判断,明确类实现的是哪个类
final关键字 : 1.使得一个变量的值不能更改 2.类被final声明,将无法被继承,不允许子类的存在。
3.类的成员属性被声明为final,必须在构造方法或者定义时赋初始值。
6.接口
只代表某个确切的功能。接口包含的一些方法的具体定义,类可以实现这个接口,表示类支持接口代表的功能。一个类可以实现多个接口,不能理解为多继承。接口是附加功能。