一 封装
概念:是指隐藏对象的属性和实现细节, 仅对外提供访问的方式
好处:讲变化隔离;便于使用;提高重用性;安全性;
单例设计模式:
解决的问题:保证一个类在内存中的对象具有唯一性。
Runtime()方法就是单例设计模式进行设计的
如何保证队形的唯一性呢?
思想:
1,不让其他程序创建对象
2,在本类中创建一个本类对象
3,对外提供方法,让其他程序获取这个对象。
class Single
{
private Single() { } // 私有化构造函数
private Static Single s = new Single(); // 创建私有化并静态的本类对象
public Static Single getInstance() { return s } // 定义共有并静态的方法,返回本类对象
}
// 懒加载
class Single2
{
private Single2() {}
private static Single2 s = null;
public static Single2 getInstance()
{
if(s == null)
{
s = new Single2()
}
return s;
}
}
二 继承
好处:
1:提高了代码的复用性。
2,让类和类之间产生了关系
final 特点
1, 修饰符关键字,可以修饰类,方法,变量
2,被 final 修饰的类是一个最终类,不可以被其他类继承
3,被 final 修饰的方法是一个最终方法,不可以被覆盖
4,被 final 修饰的变量是一个常量,只能赋值一次
抽象类特点:
1,抽象方法只能定义在抽象类中,抽象类和抽象方法必须由 abstract 关键字修饰
2, 抽象方法只能定义方法的声明,不能定义方法的实现
3, 抽象类不能实例化对象
4, 只有通过子类继承抽象类并覆盖了抽象类中的所有抽象方法后,该子类才可以实例化。否则,该子类还是一个抽象类
5,抽象类只能单继承
接口:
抽象类和接口的区别:
1,抽象类只能被继承,而且只能单继承
接口需要被实现,而且可以多实现
2, 抽象类中可以定义非抽象方法,子类可以直接继承使用
接口都有抽象方法,需要子类去实现
3,抽象类使用的是 is a 关系
接口使用的是 like a 关系
4,抽象类的成员修饰符可以自定义
接口中的成员修饰符是固定的,全是 public
三 多态
多态:函数本身就具有多态性,某一种食物有不同的具体的体现
体现:父类的引用或者接口的引用指向了自己的子类对象 Animal animal = new Cat()
多态的好处:提高了程序的扩展性
多态的弊端:当父类引用指向了子类对象时,虽然提高了扩展性,但是只能访问父类中具备的方法,不可以访问子类中特有的方法。访问的局限性
匿名内部类:没有名字的内部类。就是内部类的简化形式。一般只用一次的就有这种方式
内名内部类的格式: new 父类&接口名(){ 定义子类成员或者覆盖父类方法 }