(一)Java继承概念
继承机制基本概念:
当多个类之间有相同的特征和行为时,可以将相同的内容提取出来组成一个公共类,让多个类吸收公共类中已有特征和行为而在多个类的内部编写自己独有的特征和行为的方式,叫做继承。 | |
---|---|
作用:
使用继承可以提高代码的复用性和扩展性以及可维护性。 | |
---|---|
例如:
public class Student extends Person{
} //表示Student继承自Person
Person叫基类、父类、超类;Student叫孩子类、派生类、子类。
Java继承注意事项:
1.子类可以继承父类的成员方法和成员变量,其中私有成员变量可以继承但不可以直接使用,子类不可以继承父类的构造方法和私有方法。
2. Java语言只支持单继承,不支持多重继承,也就是一个子类只能有一个父类,但一个父类可以有多个子类,使用继承必寻满足子类is a父类。
3.无论什么方式、无参或是有参都会继承父类的无参构造方法来初始化子类从父类中继承下来的成员变量,相当于在子类构造方法第一行增加代码:super()的效果。
(二)Java重写(override)
方法的重写(override)基本概念
若父类中继承下来的方法不满足子类的需求时,就需要在子类中重写一个与父类中一样的方法来覆盖父类中继承的版本,这种就叫重写。 | |
---|---|
方法重写的原则:
-
要求方法名相同,参数列表相同、返回值类型相同,从jdk1.5开始允许返回子类类型;
-
访问权限不可以变小,可以相同或者变大;
-
要求不能抛出更大的异常;
-
在子类重写的方法中,可以通过super关键字调用父类的“原始”方法。
-
static重写的关键字重写以后还是static; 静态的方法上不可以加@override标注。
(三)Java单例设计模式
单例设计模式基本概念:
- 在某些特殊场合中一个类对外只提供一个对象,这样的类叫做单例类。
- 设计单例类的思想和模式叫做单例设计模式,用于固定场合。
实现流程:
- 私有化构造方法,使用private关键字修饰;
- 声明本类类型的引用指向本类类型的对象,使用private static修饰;
- 提供公有的get方法负责将成员变量的数值返回出去,使用static修饰;
实现方式:
1 饿汉式
2 懒汉式
单例设计模式简单举例:
/*
* Singleton单例模式
* */
public class Singleton {
//提供本类型的引用变量指向本类类型的对象
private static Singleton sin=new Singleton();
//private修饰该构造方法只能在本类内部中使用
private Singleton() {
}
//提供公有的get方法将成员变量返回出去
public static Singleton getInstance() {
return sin;
}
}
public class SingletonTest {
public static void main(String[] args) {
Singleton s1=Singleton.getInstance();
Singleton s2=Singleton.getInstance();
System.out.println(s1==s2);
}
}
上述代码判断s1是否=s2即可验证
其中的static修饰的成员方法可以通过类名.方法名调用,属于对象层级。
静态方法和非静态方法区别:
- 在非静态的成员方法中:既可以访问非静态的成员和静态的成员方法。(原因:静态成员被所有对象共享)
- 在静态成员方法中只能访问静态的成员不能访非静态的成员。(调用静态方法时可能还没有创建对象)