重识Java第五天打卡----面向对象进阶1【static关键字、单例、继承】

活动地址:CSDN21天学习挑战赛

一、static关键字

1.定义及用法

(1)定义[相关概念]

  • static是静态的意思,可以用来修饰成员变量、成员方法。
  • static修饰成员变量之后称为静态成员变量(or类变量),修饰方法之后称为静态方法(类方法)。
  • static修饰后的成员变量,可以被类的所有对象共享(访问、修改)。

(2)用法

static修饰成员变量时,被称为静态成员变量。
其特点是:属于类、加载一次,内存中只有一份
其访问格式为:①类名.静态成员变量(推荐)②对象名.静态成员变量(不推荐)

static修饰成员方法时,被称为静态成员方法
特点,格式均与静态成员变量相同;需要注意的是静态成员方法只能访问静态成员变量,且不可以出现this关键字

2.具体代码

public class Student
private String name;1.实例方法:无static修饰的,属于对象的
public void study(){
	System.out.println(name+"在好好学习~~~");
}2.静态方法:有static修饰,属于类和对象共享的
public static int getMax(int a int b){
	return a>b?a:b;
}
public static void main(String[]args){1.类名.静态成员方法
System.out.println(Student.getMax(10,2));
川注意:同一个类中访问静态成员类名可以不写
System.out.println(getMax(2,10));2.对象.实例成员方法
∥study();∥会报错
Student s new Student();
s.name="猪八戒";
s.study();3.对象静态成员方法。(不推荐)
System.out.println(s.getMax(20,10));

3.static基础应用知识

(1)工具类

Q:什么是工具类?

A:类中都是一些静态方法,每个方法都是以完成一个共用的功能为目的,这个类用来给系统开发人员共同使用的。这样的类就是工具类

Q:工具类有什么用?

A:①调用方便(直接用类名.静态方法名即可);②提高了代码复用

Q:工具类有什么要求?

A:

  • 建议工具类的构造器尽量私有化处理
  • 工具类不需要创建对象

(2)代码块

Q:什么是代码块?

A:代码块是类的5大成分之一(成员变量、构造器,方法,代码块,内部类),定义在类中方法外。
重识Java第五天打卡----面向对象进阶1【static关键字、单例、继承】_第1张图片

(3)单例设计模式

① 设计模式的定义:开发中经常遇到一些问题,一个问题通常有n种解法的,但其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为设计模式。

② 单例设计模式的作用:可以保证系统中,应用该模式的这个类永远只有一个实例,即一个类永远只能创建一个对象

③两种常见的单例设计模式:

  • 饿汉设计模式 – 怕饿着,所以先创建好备着
    具体指:在用类获取对象的之前,提前创建好对象。
/**a、定义一个单例类*/
public class SingleInstance{
	/**a.定义一个静态变量存储一个对象即可:属于类,与类一起加载一次*/
	public static SingleInstance instance new SingleInstance ();

	/**b.单例必须私有构造器*/
	private SingleInstance ();
		System.out.println("创建了一个对象");
}
  • 懒汉设计模式 – 懒得提前创建,要用了才创建
    具体指:在真正需要该对象的时候,才去创建一个对象(延迟加载对象)。
/**定义一个单例类*/
class SingleInstance{
/**定义一个静态变量存情一个村象即可:属于类,与类一起加载一次*/
public static SingleInstance instance //null
/**单例必须私有构造器*/
private SingleInstance(){}
/**必须提供一个方法返回一个单例对象*/
public static SingleInstance getInstance(){
	instance = new SingleInstance();
return instance;

注意!使用单例设计模式的类若后续需要获取和修改参数,则一定要提供对外的接口,比如getxxx()方法和setxxx()方法。

二、面向对象三大特性之二 ---- 继承

1.基本概念

什么是继承?

继承是java允许我们用extends关键字,让一个类和另一个类建立起一种父子关系。

继承的好处

提高代码复用性,减少代码冗余,增强类的功能扩展性。

继承的特点

①子类可以继承父类的属性和行为,但是子类不能继承父类的构造器
②Java是单继承模式:一个类只能继承一个直接父类。【但是接口可以有多个父级接口】
③Java不支持多继承、但是支持多层继承。
④Java中所有的类都是Object类的子类。

2.易错点

(1)一些特殊的变量能否继承

①父类的私有成员变量/方法 – 可以继承,但是不可以直接访问,可以使用super.xx访问
②父类的静态成员 --子类可以直接共享访问,但不应理解为继承(尚有争议)

(2)在子类中访问成员遵循 就近原则

重识Java第五天打卡----面向对象进阶1【static关键字、单例、继承】_第2张图片

(3)构造器问题

子类中所有的构造器默认都会先访问父类中无参的构造器,再执行自己。

3.方法重写

定义:在继承体系中,子类出现了和父类中一模一样的方法声明,我们就称子类这个方法是重写的方法

注意点:

  1. 最好在重写的方法之上都加上@override重写注解(加上该注解后如果重写错误,编译阶段会出现错误提示。)
  2. 重写方法的名称、形参列表必须与被重写方法的名称和参数列表一致。
  3. 私有方法不能被重写。
  4. 子类重写父类方法时,访问权限必须大于或者等于父类 (缺省 < protected < public)
  5. 子类不能重写父类的静态方法,若重写则会报错。

你可能感兴趣的:(重识Java,java,jvm,开发语言)